У меня есть то, что становится сложной моделью, и я пытаюсь высушить ее. В случае моих опций has_many, вместо того, чтобы повторять их, я хотел бы просто загрузить их из метода в классе.Загрузка has_many options hash методом
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
, а не мой производный ExampleClass
, так что, возможно, это связано с тем, как has_many загружен и где я определяю свой метод?
Выглядит хорошо, я спрятал модуль в/lib. –