繁体   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