我只想在用户注册时创建另一条记录。我认为以下是Clearance触及我的应用程序的唯一地方,不包括观点。
class ApplicationController < ActionController::Base
include Clearance::Controller
before_action :require_login
.
.
.
end
class User < ActiveRecord::Base
include Clearance::User
has_many :received_messages, class_name: 'Message', foreign_key: :receiver_id
has_one :privilege
end
答案 0 :(得分:2)
你想要after_create
(或者可能是before_create
,或者其他一些钩子,这取决于你的语义),这是由Rails独立于Clearance提供的。它允许您在创建User
记录后声明要运行的方法,并且该方法可以创建您想要存在的其他对象。
class User < ActiveRecord::Base
after_create :create_other_thing
private
def create_other_thing
OtherThing.create(other_thing_attributes)
end
end
请注意,after_create
与User
创建的同一交易中运行时间比OtherThing.create
更高,因此如果在User
期间出现例外情况,则{{1}}将被退回。
查看Active Record Callbacks以获取有关ActiveRecord生命周期挂钩如何工作的完整详细信息。