0

可能重复:
在 Rails 中设置默认值的正确方法

我有两个数据表:

1) 用户

2)个人资料(具有字段user_id)

它们通过以下方式关联:

  • 用户 has_one 个人资料
  • 个人资料 belongs_to 用户

每次创建新用户时,是否可以在配置文件表中保存一些默认值?

谢谢你的帮助!

4

2 回答 2

1

您可以使用 ActiveRecord回调创建默认配置文件。

只需创建一个方法,并将其用作 :after_create

class User < ActiveRecord::Base

  has_one :profile

  after_create :create_default_profile

  def create_default_profile
    profile = build_profile
    # set parameters
    profile.save
  end

end

build_profile 构建并链接 Profile 的实例,但不保存它。create_profile 相同,但它也保存对象。有关完整说明,请参阅ActiveRecord 文档

您可以将属性添加到 build_ 和 create_profile 作为哈希,因此您可能可以将 create_default_profile 减少到一行:

def create_default_profile
  profile = create_profile :some => 'attirbute', :to => 'set'
end
于 2013-01-18T19:10:15.277 回答
0

是的,您可以为配置文件添加默认值。

我正在为用户设置一些配置文件的值member_standingpoints属性。

在为用户控制器创建操作

def create
  @user = User.new(params[:user])
  profile = @user.profiles.build(:member_standing => "satisfactory", :points => 0)
  if @user.save
    redirect_to @user
  else
    render "new"
  end
end
于 2013-01-18T19:11:19.147 回答