2012-03-19 9 views
1

私は2つのモデルの連絡先とユーザーを持っています。新しいユーザーを作成すると、同時に連絡先を作成しようとしています。しかし何らかの理由で作成されていません。なぜどんなアイディアですか?Mongoidは1:1の関係で 'belongs_to'のnested_attributesを保存しません

class Contact 
    include Mongoid::Document 
    include Mongoid::Timestamps 
    include Mongoid::MultiParameterAttributes 
    include Mongoid::Paranoia 
    include Mongoid::Versioning 

    # Attr. 
    attr_accessible :first_name, :last_name, :birthday, :email_addresses_attributes, :phone_numbers_attributes, :relationships_attributes, :addresses_attributes 

    #Relationships 
    belongs_to :firm, validate: true 
    has_one :user # contact information for user 
    has_many :relationships, autosave: true 
    has_many :clients 
    has_many :notes, dependent: :destroy 
    ... 
end 


class User 
    include Mongoid::Document 
    include ActiveModel::SecurePassword 
    include Mongoid::Timestamps 

    # Attr. 
    attr_accessible :contact_id, :contact_attributes, :password, :password_confirmation, :google_tokens 

    #Relationships 
    belongs_to :firm, validate: true 
    belongs_to :contact, validate: true, autosave: true 
    has_one :user_type 
    embeds_many :histories 

    # Nested Attrs 
    accepts_nested_attributes_for :contact 
    ... 
end 

答えて

0

accepts_nested_attributes_forは、あなたがそれを属するオブジェクトの属性を設定することができるように、所有者オブジェクト上で行われます。

あなたの場合、ユーザーは連絡先に属しています(またはその下にネストされています)。連絡先モデルでaccepts_nested_attributes_for :userを実行する必要があります。

ユーザーhas_one :contactと連絡先belongs_to :userに切り替えることができます。これには、連絡先にuser_idフィールドを指定する必要があります。

+0

はい、私は連絡先ではなくユーザーを作成しています。 accepts_nested_attributes_for:ユーザーを運がないContactモデルに追加しようとしました。残念なことに、私は物事を切り替えると、私のフォームを破る。私のフォームエラーは、user_idフィールドが追加されていれば、そのuser_idがないことを示しています。 –

+0

フォームの主なオブジェクトがユーザーの場合は、関係を切り替える必要があります。連絡先にuser_idフィールドを追加するだけです。あなたのフォームが提出されると、それは入力されます。 – tybro0103

+0

まだ運がありません。私は調整を行い、連絡先はまだ保存されていません。 –

関連する問題