Rails:跳过 after_create

Jer*_*mas 1 ruby-on-rails callback after-create ruby-on-rails-4

我有 2 个型号:

class User < ActiveRecord::Base
    has_one :client
end

class Client < ActiveRecord::Base
    belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)

我通常创建user第一个,并有一个过滤器,在创建后after_create创建。clientuser

after_create :create_client
Run Code Online (Sandbox Code Playgroud)

我有一个新的案例,其中存在,并且我想在已经存在的情况client创建。在这种情况下,当我创建时我想跳过过滤器。 user clientuserafter_create

我知道我需要after_create :create_client, unless: ____,但我不知道如何区分这一点。

Vis*_* PM 5

对于这种情况,您可以使用 attr_accessor 创建实例变量

class User < ActiveRecord::Base
  attr_accessor :has_client
  ...
end
Run Code Online (Sandbox Code Playgroud)

您可以为该变量分配布尔值并限制 after_createif condition

class User < ActiveRecord::Base
  ...
  after_create :create_client, unless: :has_client
  ...
end
Run Code Online (Sandbox Code Playgroud)