创建数据库时在数据库中创建行的正确轨道方式是什么?
例如,您有一个用户模型,您可以在其中创建新用户
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挂钩来执行此操作。
答案 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