我有一個簡單的模型,User
,通過Rails(version 4.0.2)的Devise(version 3.0.4)gem生成。我還製作了一個名爲Profile
的非設計模型。配置文件有兩個字符串屬性,name
和bio
。每個用戶has_one
配置文件,以及每個用戶配置文件belongs_to
。我試圖讓用戶註冊表單包含配置文件屬性,因此新用戶表單中嵌套的配置文件表單。我的表單設置正確,並且所有用戶和配置文件屬性都已正確傳遞到:params
。 似乎一切正常,除了配置文件,它的屬性不保存到數據庫。日誌顯示:profile
對用戶爲零。 我做了很多研究,我覺得我已經嘗試了一切,所以我希望有人能夠解決這個問題。下面的代碼:Rails設計模型不是以嵌套形式保存模型?
用戶模式:
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy, :autosave => true
accepts_nested_attributes_for :profile
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
剖面模型:
class Profile < ActiveRecord::Base
belongs_to :user, :autosave => true
validates :user_id, presence:true
end
註冊記憶控制器:
class RegistrationsController < Devise::RegistrationsController
def new
resource = build_resource({})
resource.build_profile
respond_with resource
end
end
新用戶的形式,views/devise/registrations/new.html.erb
:
<h2>Sign up</h2>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<div><%= f.label :email %><br />
<%= f.email_field :email, :autofocus => true %></div>
<div><%= f.label :password %><br />
<%= f.password_field :password %></div>
<div><%= f.label :password_confirmation %><br />
<%= f.password_field :password_confirmation %></div>
<%= f.fields_for :profile do |builder| %>
<h2><%= builder.label :bio%></h2>
<p><%= builder.text_field :bio %></p>
<h2><%= builder.label :name %></h2>
<p><%= builder.text_field :name %></p>
<% end %>
<div><%= f.submit "Sign up" %></div>
<% end %>
我沒有在配置控制器東西,除了像「新」空現有的方法。
你沒有你強的參數在應用程序控制器設置, 你做? – JustBasti