[英]Passing :test caused ArgumentError: wrong number of arguments (given 0, expected 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.