2012-04-30 21 views
3

mongoidを使用してネストされた属性を持つフォームを作成しようとしています。フォームから返されるのparamsは、次の順序であるmongoidのネストされた属性の規約を受け入れる

def Company 
    field :name 

    has_many :users, autosave: true, dependent: :destroy 
    accepts_nested_attributes_for :users 
end 

def User 
    belongs_to :company 
    has_one :profile 
end 

def Profile 
    belongs_to :user 
end 

:Company.create([:会社]のparams)を呼び出し

"company"=> 
    {"users_attributes"=> 
    {"0"=> 
     {"profile_attributes"=> 
     {"first_name"=>"123123abcd123", "last_name"=>"abcd123123123"}, 
     "email"=>"[email protected]", 
     "password"=>"123123123123", 
     "password_confirmation"=>"123123123123"}}, 
    "name"=>"abcd123123123", 
    "subdomain"=>"abcd123123123"} 

が動作しているようですが、私のモデルには、次のコードを持っていますただし、ユーザーオブジェクトを適切に作成していません。私はcompany.usersを行うとき、私はそのオブジェクトを見ることができますが、User.findを実行すると、そのドキュメントは利用できません。

"company"=> 
    {"users_attributes"=> 
    [{"profile_attributes"=> 
     {"first_name"=>"123123123", "last_name"=>"123123123"}, 
     "email"=>"[email protected]", 
     "password"=>"123123", 
     "password_confirmation"=>"123123"}], 
    "name"=>"abcd123123123", 
    "subdomain"=>"abcd123123123"} 

注代わりにハッシュのusers_attributesの配列を用いての微妙な違いを:ドキュメンテーションを読んで私は、paramsは、以下の方法で渡さなければならないことに気づきました。これは正しく動作しますが、Active Recordのようなものではなく、レールのようなものでなければなりません。私はparamsハッシュを取って、特定の規則に従うようにデータを修正したくありません。もっと良い方法がありますか、私は何かを逃していますか?

答えて

0

アレイを作成するinputs as user_attributes[]の名前を付けることができます。

だからではなく、それはuser_attributes[][profile_attributes]

0

は、フォームのコードを投稿できる持ってくださいuser_attributes[0][profile_attributes](私はあなたがこのような何かを持っていると思う)

を持つの?それから、私たちはそれが何らかの形でフォーマットされた理由を知ることに取り組むことができます。 (これはコメントでなければなりませんが、質問に関する詳細があれば回答を提供するつもりです)。

ビュー内のフォームに関する問題の副題です。私はあなたが会社を作りようとしていることに気づいており、それはネストされたユーザーとユーザーであり、ネストされたプロファイル属性でもあります。ユーザーがプロファイルのネストされた属性を受け入れることをユーザーが期待する場合は、ユーザーモデルに配置する必要があります。

def User 
    belongs_to :company 
    has_one :profile, dependent: destroy, autosave: true 
    accepts_nested_attributes_for :profile 
end 

これは、ユーザーが明示的な指示なしにプロファイル属性を一括割り当てしようとすると、エラーが発生する可能性があります。

関連する問題