Простите, если то, что я скажу, не имеет никакого смысла ... но я не могу проверить здесь, что я собираюсь предложить, так что ...
railsapi.doc
говорит следующее о опции :conditions
для отношения has_many
:
[...] Запись творений из
ассоциация ограничена, если хеш
используемый. has_many: сообщения,: условия
=> {: опубликовано => правда} создаст опубликованные сообщения с
@ blog.posts.create или
@ Blog.posts.build.
Итак, если вы задали условие, используя хэш
class MyClass < ActiveRecord::Base
has_many :modifiers,
:conditions => {:affects_class => self.name},
:foreign_key => :affects_id
end
и создайте modifiers
, используя
myInstance = MyClass.find(:first)
myInstance.modifiers.create #or myInstance.modifiers.build
Вы не получите модификаторы с уже заданным именем?
Я просто не очень уверен в использовании self.name
. Я не знаю, является ли это правильным способом получить имя класса.
В любом случае, дайте мне знать, если это работает. Это ново для меня и очень полезно.