Ruby - 引用self.method中的另一个类

时间:2017-01-11 12:37:07

标签: ruby-on-rails ruby

我有2个班,人和会员。成员有一个名为individual_ids的方法,它返回一个ID数组,我想检索该数组中具有ID的人:

class Membership

  def self.individuals
    where(membershipable_type: 'individual')
  end

  def self.individuals_ids
    individuals.pluck(:membershipable_id)
  end
end


class Person

  def self.individuals
    Person.where(id: Membership.individuals_ids)
  end

end

当我试图运行Person.individuals时,我被告知:

NameError: uninitialized constant Person::Membership

如何从上面的自我方法调用中引用Membership类,而不是认为我的意思是Person.Membership?

谢谢!

1 个答案:

答案 0 :(得分:2)

当两个类都在同一个文件中时,您的代码可以正常工作。 Membership类找到Person类:

class Membership
  def self.individuals
    puts "Membership.individuals"
  end

  def self.individuals_ids
    puts "Membership.individuals_ids"
  end
end

class Person
  def self.individuals
    puts "Person.individuals"
    Membership.individuals_ids
  end
end

Person.individuals

#=> Person.individuals
#=> Membership.individuals_ids

这意味着您的Membership课程不是autoloaded Rails。您可以确保在Membership中定义了membership.rb,并且: