有没有办法检测rails4中是否有一个或多个关联发生变化?

时间:2015-12-14 17:18:36

标签: ruby-on-rails ruby-on-rails-4

当一个或多个关联发生变化时,我只想调用一些方法。

3 个答案:

答案 0 :(得分:0)

我猜你要找的是回调:

http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

例如:

after_destroy :do_something

private

def do_something
   ...
end

答案 1 :(得分:0)

您可以使用set_callback回调,即

np.array(1)

答案 2 :(得分:0)

如果您不介意确切地知道哪个相关记录发生了变化,那么触摸它会很好:

class Post < ActiveRecord::Base
  belongs_to :category, touch: true
end

class Category < ActiveRecord::Base
  has_many :posts

  after_touch :update_name_cache

  private

  def update_name_cache
    PostNameCache.new( self ).set posts.pluck :name
  end
end