我正在开展一个涉及三个模型(收件人,奖励,播音员)的项目,并且当播音员向多个收件人发放奖励时需要具有嵌套属性 . 举个例子,奖励表格需要有能力做三件事:
-
可以添加多个收件人(即"add recipient","remove recipient") - 嵌套属性
-
创建新奖项后,该奖项将发布到收件人的 Profiles 中 .
-
启用@ recipient.awards和@ announcer.awards的未来轮询
在如何巧妙地解决这个问题方面真的很挣扎 . 以下数据结构有意义,但不能在奖励表单中执行“accepts_nested_attributes_for:recipients” . 你能帮我吗?提前谢谢了 .
class Recipient <ActiveRecord :: Base
-
has_many:奖励
-
has_many:播音员,:通过=>:奖励
结束
class Announcer <ActiveRecord :: Base
-
has_many:奖励
-
has_many:收件人,:通过=>:奖励
结束
class Award <ActiveRecord :: Base
-
belongs_to:播音员
-
belongs_to:收件人
结束
1 回答
你就在那里 . 主要问题是您尝试在表单中创建收件人对象,而不是仅仅创建奖励与另一个对象(用户)之间的关系 . 你可以这样做:
然后你只需要一个嵌套的表单来构建recipients_attributes数组:
并且,为了保持干燥,只需将嵌套部分推入部分:
显然User.all调用并不理想,所以可能会自动完成 .