我正在使用Devise gem來驗證用戶。我有一個用戶模型和地址模型關係,其中每個用戶has_one :address
和每個地址belongs_to :user
。當我嘗試註冊新用戶時,頁面加載時出現以下錯誤:unknown attribute: user_id
。跟蹤指向我的視圖中看到的行<% resource.build_address...
。具有設計嵌套屬性的未知屬性'user_id'
如果我只是刪除我的觀點,即線的頁面將加載,但沒有我的嵌套表單字段的顯示出來。
在Rails控制檯中,我可以創建並保存一個地址,然後使用該保存的地址作爲將保存的新用戶的屬性。
的觀點如下:
<% resource.build_address unless resource.address %>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= f.email_field :email, :autofocus => true, placeholder: "Your email", class: 'input-block-level' %><br>
<%= f.password_field :password, placeholder: "Password", class: 'input-block-level' %><br>
<%= f.password_field :password_confirmation, placeholder: "Confirm password", class: 'input-block-level' %><br>
<%= f.text_field :favorite_cuisine, placeholder: "Favorite cuisine", class: 'input-block-level' %><br>
<%= f.fields_for :address do |address_form| %>
<%= address_form.text_field :street_one, placeholder: "Street", class: 'input-block-level' %><br>
<%= address_form.text_field :street_two, placeholder: "Street #2", class: 'input-block-level' %><br>
<%= address_form.text_field :city, placeholder: "City", class: 'input-block-level' %><br>
<%= address_form.text_field :state, placeholder: "State", class: 'input-block-level' %><br>
<%= address_form.text_field :zip, placeholder: "zip", class: 'input-block-level' %><br>
<% end %>
<% end %>
我的用戶模型:
has_one :address, :dependent => :destroy
accepts_nested_attributes_for :address
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable,
# :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me,
:favorite_cuisine, :username, :address
validates_presence_of :email
validates_presence_of :address
我的地址模型:
belongs_to :user
attr_accessible :city, :state, :street_one, :street_two, :zip, :user_id
validates_presence_of :city
validates_presence_of :state
validates_presence_of :street_one
validates_presence_of :zip
我要去哪裏錯了嗎?
你能在你的方案,解決了一個USER_ID現場驗證? (我敢打賭它沒有)。 –
你是對的,地址沒有user_id字段。我應該如何構建我的遷移以將user_id添加到地址並使其引用用戶? –