![](/img/trans.png)
[英]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.