2011-10-25 5 views
0

私は以下の構造を持っていますが、私はdeviseユーザーの登録時に少なくとも1つのアドレス(アクティブ検証付き)を作成しようとしています。ユーザーはアドレスを検証せずに正常に保存されており、有効であるにもかかわらず破棄されています。私はアクセスしてアドレス:user.addresses << Address.new(...)経由でコンソールに追加できますが、フォーム経由では追加できないことをテストして確認しました。私はここで何が起こっているのか分かりません。次のようなネストされたモデルを受け入れるには:has_many with Deviles in Rails 3

アイデア?どんな/すべての助けが大歓迎です - ありがとう!

モデル/ user.rb

class User < ActiveRecord::Base 
    has_many :user_addresses 
    has_many :addresses, :through => :user_addresses 
    ... 
    attr_accessible ..., :addresses 
    accepts_nested_attributes_for :addresses 
end 

モデル/ user_addresses.rb

class UserAddress < ActiveRecord::Base 
    belongs_to :address 
    belongs_to :user 
end 

ビュー/登録/ new.html.haml

答えて

1
- resource.addresses.build if resource.addresses.empty? 
= semantic_form_for resource, :as=> resource_name, :url => registration_path(resource_name) do |f| 
    = devise_error_messages! 
    ... 
    = f.inputs :name => "Addresses", :id=> "addresses" do 
    = f.semantic_fields_for :addresses do |a| 
     ... 

私は2つのことを試したいと思います:

  1. ログを確認し、属性を一括割り当てできないという警告が表示されているかどうかを確認します。
  2. 追加:あなたのattr_accessibleにaddresses_attributes
+0

ヘクタールああ、ありがとうの男!私はログでそれを逃したとは信じられない。 – Chance

+0

これも検証します。ありがとうございました。D – Chance