我正在尝试从嵌套形式建立多态关系,该形式与我找到的所有示例都相反。我希望有人指出我的方式的错误。
class Container < ActiveRecord::Base
belongs_to :content, :polymorphic => true
end
class Notice < ActiveRecord::Base
has_one :container, :as => :content
end
class Form < ActiveRecord::Base
has_one :container, :as => :content
end
似乎大多数人会从通知或表单构建容器,但在我的情况下,通知或表单包含少量内容(文件位置或几个 db 字段),因此从构建通知或表单要干燥得多容器。
我想我可以通过添加来解决,accepts_nested_attributes_for :content
但这给了我一个unrecognized attribute :notice
当我尝试创建一个带有嵌套通知的容器时(寻找内容,而不是多态关联)
我可以手动完成并明确排除嵌套字段,例如
if params[:container].has_key('notice')
@c = Container.new(params[:container].except(:notice))
然后建造,但这不是一种气味吗?有没有更好的办法?
感谢您的阅读!