Rails 3:使用has_one设计,嵌套属性未更新

Min*_* Lo 5 ruby-on-rails devise ruby-on-rails-3

我正在创建一个名为user_info的用户的一对一关系.以下是工作解决方案.

在user.rb中

has_one :user_info
accepts_nested_attributes_for :user_info, :allow_destroy => true
attr_accessible :username, :email, :password, :password_confirmation, :remember_me, :user_info_attributes
Run Code Online (Sandbox Code Playgroud)

在user_info.rb中

belongs_to :user
attr_accessible :first_name, :last_name
Run Code Online (Sandbox Code Playgroud)

在devise/registrations/edit.html.erb中

<% resource.build_user_info if resource.user_info.nil? %>
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name), :html => { :method => :put }) do |f| %>
    ...
    <%= f.fields_for :user_info do |info| %>
        <%= info.text_field :first_name %>
Run Code Online (Sandbox Code Playgroud)

我知道我不应该在视图中包含构建.但我不想"触摸"设计控制器或模型.这是最简单的方法.

Min*_* Lo 3

事实证明,构建线在视图中无法正常工作。

应该: <% resource.build_user_info if resource.user_info.nil? %>