新手问题 Rails 4 怎样 create without call back?

cqcn1991 · 2015年07月08日 · 最后由 cqcn1991 回复于 2015年07月08日 · 1297 次阅读

比如说,我在 Article model 下面,有 callback,在绝大多数情况下,每次创建 article,都想跑一下这个 callbakc

class Article < ActiveRecord::Base
  after_validation :get_share, on: :create
end

但是有的时候,不想运行的话怎么办呢? 查了 Rails 4,似乎没有办法 http://stackoverflow.com/questions/632742/how-can-i-avoid-running-activerecord-callbacks 当中的skip_some_callbacks,我试了一下,似乎不行

什么情况下不要运行?

有一个 if 的 options。

#1 楼 @blacktulip 我从另外一个服务器抓 json,直接复制数据过来

自己在 get_share 里判断

def get_share
  if not 所谓的有的时候
    ...
    ...
  end
end

😄

#4 楼 @huobazi #5 楼 @gihnius 最后是这样 workaround 的... after_validation :get_share, on: :create, if: Proc.new { |article| article的一些判断} 话说这后面为啥不能 pass self 之类的?非得跟这个一长传?

http://guides.rubyonrails.org/active_record_validations.html#conditional-validation

class Order < ActiveRecord::Base
  validates :card_number, presence: true, if: :paid_with_card?

  def paid_with_card?
    payment_type == "card"
  end
end

RTFM

#9 楼 @rei #8 楼 @rei 是的,最后也是按 Guides 上的做法来的... 但是参照的是这里http://guides.rubyonrails.org/active_record_callbacks.html#skipping-callbacks

需要 登录 后方可回复, 如果你还没有账号请 注册新账号