我在使用Devise的Rails 5应用程序中有一个用户模型。
我也有一个关系:用户belongs_to帐户。
现在,当我创建一个新用户时,我想自动为它创建一个新的空帐户。
我已经拥有了我的注册控制器和方法:
def create
super
end
我想做这样的事情:
def create
super
user.account.create()
end
答案 0 :(得分:0)
在设计控制器中,默认情况下将用户对象称为resource
。所以这样的事情会起作用:
def create
super
if resource.persisted? # user has been created with no errors
resource.account.create # assuming it will pass validations without arguments
end
end
另一种方式,正如@ julien-js所提到的,是在创建后的钩子中创建帐户,但是你可以使用after_commit(read more about the difference)代替after_create:
after_commit :create_account, on: :create
def create_account
self.account.create unless self.account.present?
end
答案 1 :(得分:0)
你在寻找类似的东西吗?
在您的模型User.rb
中after_create do
self.account = Account.create() if self.account.nil?
end