我有两个类Tutor
和Session
,它们在多态关系中共享相同的子类Field
。
当导师创建会话时,我希望将标题自动从教师复制到会话(即,新的条目将添加到“字段”表中)。例如,
t = Tutor
Session.fields.build_from_tutor(t.fields)
我只是编造build_from_tutor方法。是否有Rails / Ruby方法可以做到这一点?
谢谢。
答案 0 :(得分:1)
如果您希望相同的条目作为两个类的子元素存在,那么这不是多态的;这只是混淆继承。可以是Tutor has_many :sessions
和Session has_many :fields
,也可以是Tutor has_many :fields, :through => :sessions
,或者是Tutor has_many Sessions, :as => :fieldable
,Session has_many :fields, :as :feildable
和Field belongs_to :fieldable, :polymorphic => true
,但这将阻止Tutor和Session 分享一个字段。
所以你需要搞清楚。然后你就可以找到一个理智的建设者。但是,如果你拥有它,你将永远无法规范化你的数据模型。即使对于Rails应用程序,您也应该将自己保持在3NF作为最低标准,恕我直言。