自动保存在关联的数据表中

时间:2013-01-18 19:06:11

标签: ruby-on-rails

  

可能重复:
  Correct Way to Set Default Values in Rails

我有两个数据表:

1)用户

2)配置文件(具有字段user_id)

他们通过以下方式联系在一起:

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

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

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以使用ActiveRecord callbacks创建默认个人资料。

只需创建一个方法,并将其用作: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 documentation

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

def create_default_profile
  profile = create_profile :some => 'attirbute', :to => 'set'
end

答案 1 :(得分: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