如何在Ruby on Rails中构建与用户关联的首选项记录?

时间:2013-02-19 18:03:12

标签: ruby ruby-on-rails-3 activerecord ruby-on-rails-3.1 ruby-on-rails-3.2

在Ruby on Rails中,当创建新user时,我想自动为该用户创建关联的preference记录。

这是我的控制者:

class UsersController < ApplicationController

  def create
    @user = User.new(params[:user])
    if @user.save
      @user.build_preference 
      redirect_to root_path, :notice => "User created."
    else
      render :new
    end
  end

end

然而,出于某种原因,我无法让它发挥作用。用户成功保存,但是当我检查数据库时,没有相关的preference记录。

我在这里缺少什么?

使用:before_create或其他东西在模型中创建关联记录是否更好?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您需要save

def create
  @user = User.new(params[:user])
  if @user.save
    pr = @user.build_preference
    pr.save!
    redirect_to root_path, :notice => "User created."
  else
    render :new
  end
end