2011-09-09 4 views
46

私はこの基本的な質問に関するあらゆる種類の矛盾した情報を得ています。答えは私の現在の問題にとって非常に重要です。だから、非常に単純に、Rails 3では、belongs_to関係でaccepts_nested_attributes_forを使用することは許されているのですか?belongs_toでaccepts_nested_attributes_forを使用していますか?

ビューで
class User < ActiveRecord::Base 
    belongs_to :organization 
    accepts_nested_attributes_for :organization 
end 

class Organization < ActiveRecord::Base 
    has_many :users 
end 

:「ネストされた属性は親を通じて関連レコードの属性を保存することができ、」最初の行に状態を引用しepochwolf

= form_for @user do |f| 
    f.label :name, "Name" 
    f.input :name 

    = f.fields_for :organization do |o| 
    o.label :city, "City" 
    o.input :city 

    f.submit "Submit" 
+1

ドキュメントhttp://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.htmlは '言及していません。なぜあなたはそれを試して私たちに戻ってきませんか? – epochwolf

答えて

21

ドキュメント(私の強調)。

this other SO question which is along the same lines as this oneに興味があるかもしれません。 1)accepts_nested_attributesをリレーションシップのもう一方の側(この場合はOrganization)に移動するか、または2)using the build methodを使用して、フォームをレンダリングする前にOrganizationでユーザーを作成します。

少し余分なコードに対処したい場合は、a potential solution for using accepts_nested_attributes with a belongs_to relationshipと書かれている要点も見つかりました。これはbuildメソッドも使用します。

+0

Rails 4の要点を更新しました:https://gist.github.com/dmzza/ce9b6e660c576039afca984cda0f0aed – dmzza

19

ネストされたアトリビュートはRails 4のbelongs_toアソシエーションで正常に動作しているようです。以前のバージョンのRailsでは変更されている可能性がありますが、4.0.4でテストしました。 Railsの3.2 belongs_toの関連については

+10

まだRails 4.1.1でaccepts_nested_attributesは* polymorphic * belongs_toで動作しません。私はそれを関連の別の(has_one)側に移動しなければならなかった。これは他の人と情報を共有することです。 –

+0

私はkid_drewに同意します。私はちょうどそれをRailsバージョン4.2.9で動作させました。 – Tintin81

9

、ネストされたモデルは、以下の2つのステップが必要です。

(1)あなたの子供モデル(ユーザーモデル)に新しいattr_accessibleを追加します。

accepts_nested_attributes_for :organization 
attr_accessible :organization_attributes 

(2)列organizationを作成するためにあなたの子供コントローラ(ユーザー・コントローラ)に@user.build_organizationを追加します。私はそれを疑うbelongs_to`

def new 
    @user = User.new 
    @user.build_organization 
end 
+0

私はこれをやっていますが、私はそれを動作させるために多くの問題にぶちこんでいます。子がそのネストされたパラメータを受け入れることは、それが適切に構築するのに十分ではないように思われます。 – Csteele5

関連する問題