Rails:跳过after_create

Rails: Skip after_create

我有 2 个模型:

class User < ActiveRecord::Base
    has_one :client
end

class Client < ActiveRecord::Base
    belongs_to :user
end

我通常先创建一个 user,然后有一个 after_create 过滤器,以便在创建 user 之后创建 client

after_create :create_client

我有一个 client 存在的新案例,我想在 client 已经存在的 user 之后创建 。在这种情况下,当我创建 user 时,我想跳过 after_create 过滤器。

我知道我需要 after_create :create_client, unless: ____ 但我不确定如何区分它。

对于这种情况,您可以使用 attr_accessor

创建一个实例变量
class User < ActiveRecord::Base
  attr_accessor :has_client
  ...
end

并且您可以将布尔值分配给此变量并使用 if condition

限制 after_create
class User < ActiveRecord::Base
  ...
  after_create :create_client, unless: :has_client
  ...
end