私が見つけたすべての例に逆行するネストされたフォームからポリモーフィックな関係を構築しようとしています。誰かが私のやり方の誤りを指摘してくれることを願っています。
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))
それからビルドしますが、それは匂いではありませんか?より良い方法はありますか?
読んでくれてありがとう!