1

我有 2 个模型:

class User < ActiveRecord::Base
    has_one :client
end

class Client < ActiveRecord::Base
    belongs_to :user
end

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

after_create :create_client

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

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

4

1 回答 1

5

For this case you can create a instance variable using attr_accessor

class User < ActiveRecord::Base
  attr_accessor :has_client
  ...
end

and you can assign boolean value to this variable and restrict after_create with if condition

class User < ActiveRecord::Base
  ...
  after_create :create_client, unless: :has_client
  ...
end
于 2017-04-05T19:42:59.103 回答