ネストされた関連付けを持つ新しいレコードをクリーンな方法で作成する際に問題があります。これは、いくつかのネストされた団体でエンティティを作成しますRuby on Rails - このレコードを必要とするネストされた関連付けで新しいレコードを保存します。
@listing = current_user.listings.build(params[:listing].permit(ATTRIBUTES_FOR_CREATE))
このように、::ここでは、コントローラのコードだ
class ListingDataField < ActiveRecord::Base
belongs_to :listing
validates_presence_of :listing
end
しかし、私はコントローラに@listing.save
を行うとき、私はそれらのネストされたListingDataFieldエンティティの検証エラーを取得しています'リストを空白にすることはできません'。私が正しく理解していれば、AutosaveAssociationはネストされた関連付けを検証して保存し、最終的にトップレベルのエンティティを保存します。したがって、リストはまだ保存されていないので、ListDataFieldの検証に失敗します。
しかし、私はそれが正しいと思います:ListDataFieldにリストの検証があるので、これを削除することは考慮しません。その後、1
@listing.save(:validate => false)
により、ネストされた団体 1を構築し、レコードをリスト保存するが、これはの両方が同じくらいエレガントなようではありませんあまりにも醜いです - トランザクションに
- :私は2つのソリューションを見ることができます
current_user.listings.build(...)
、私の質問は - このための適切なRailsの方法は何ですか?P.S.私は同様の質問にはSO検索が、私はいずれかを見つけることができなかった、うまくいけば、これは重複していない:)
完璧!確かに、私はこのスイッチを何とか見逃していました – neolancer