我有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