我已经得到了正在成为一个复杂模型的东西,并且正在尝试将其干燥。对于我的 has_many 选项,我不想让它们重复,而是简单地从类的方法中加载它们。
class ExampleClass < ActiveRecord::Base
has_many :related_things, get_association_hash(arg1)
has_many :other_things, get_association_hash(arg2)
def get_association_hash(arg)
{ :class_name => 'SomeClass', :conditions => ['table.column = ?', arg] }
end
end
不幸的是,这会导致在undefined method ‘get_association_hash’ for #<Class:0x007f9ae9efe6c0>
加载类时。
(作为一个健全的检查,如果我只是自己调用它,而不将它包含在 has_many 中,那么该方法很好。此外,实际的类要大得多,所以 DRY 比这个小例子更有帮助。)
我确实注意到错误消息提到了Class
,而不是我的 derived ExampleClass
,所以也许它与 has_many 的加载方式以及我在哪里定义我的方法有关?