ActiveRecord挂钩在创建时在数据库中创建行

时间:2012-01-30 10:49:01

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

创建数据库时在数据库中创建行的正确轨道方式是什么?

例如,您有一个用户模型,您可以在其中创建新用户

User.rb model
user_id
user_id =1 

现在我正在寻找一种在数据库中为其他模型创建新对象/行的方法,例如

Account.rb model 
Should create a new row in account table with user_id = same as user_id above

目前我使用

  = f.fields_for :profile do |f| 
  = f.text_field  :some_value_for_profile

在我的用户创建视图中,以便在创建用户时将某些值写入数据库,但这不是“rails方式”,而是希望使用ActiveRecord挂钩来执行此操作。

1 个答案:

答案 0 :(得分:1)

如果要从视图中收集帐户模型的数据,则应创建包含用户记录的帐户记录。

假设两者之间存在一个关系(用户has_one帐户)

#in controller
@user = User.new params[:users]
@account = @user.build_account params[:account]
@user.save

否则,如果您尝试为所有新用户创建默认帐户记录而不在用户注册时收集帐户数据,则可以进行after_create回调

#in user.rb
after_create :add_account

def add_account
  self.create_account
end