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



我有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.Member?

谢谢!

当两个类位于同一文件中时,您的代码工作正常。 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类不是由Rails自动加载的。您可以确保在 membership.rb 中定义Membership,并且:

  • membership.rb移动到app文件夹
  • 将所需路径添加到config.autoload_paths

相关内容

最新更新