簡體   English   中英

Ruby - 找不到ArgumentError的原因:參數個數錯誤(給定0,預期2..3)

[英]Ruby - can't find cause for ArgumentError: wrong number of arguments (given 0, expected 2..3)

我有一個類Segment,我正在調用segment.build

class Segment < ActiveRecord::Base
  has_and_belongs_to_many :users

  validates :filters, presence: true

  def build
    segment_builder = BuildSegment.new(self)
    segment_builder.call
  end
end

這就是BuildSegment的外觀:

class BuildSegment

  def initialize(segment)
    @segment = segment
  end

  def call
    users_to_add = users_meeting_requirements_for(@segment)

    add_users(@segment, users_to_add)
    remove_users(@segment, users_to_add)
  end

  private

  def remove_users(segment, users_to_add)
    segment.users.where.not(id: users_to_add.uniq).delete_all
  end

  def add_users(segment, users_to_add)
    segment.users << users_to_add.uniq
  end

  def users_meeting_requirements_for(segment)
    users = Array.new

    segment.filters.each do |filter|
      users << users_passing_filter(filter)
    end

    users.flatten.uniq
  end

這一行: users_to_add = users_meeting_requirements_for(@segment)給了我:

ArgumentError: wrong number of arguments (given 0, expected 2..3)
from /Users/patryk/.rvm/gems/ruby-2.3.0/gems/activerecord-4.2.4/lib/active_record/relation.rb:23:in `initialize'

為什么? users_meeting_requirements_for只需要我提供的一個參數。 我嘗試了從users_meeting_requirements_for內部調用的實例和方法變量的不同組合,但沒有真正改變。

我迷失在這里。

這個問題隱藏得比我之前想象的要深。 參數錯誤位於users_meeting_requirements_for調用的另一個方法中

我通過逐行評論找到它,直到我到達麻煩的線。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM