Ruby on rails Rails:ousave回调是否有条件地触发特定于一个属性的操作?

Ruby on rails Rails:ousave回调是否有条件地触发特定于一个属性的操作?,ruby-on-rails,callback,Ruby On Rails,Callback,我的Rails应用程序包含事件和用户。如果用户被添加到事件中,无论是创建新事件还是更新现有事件,我都需要向用户发送消息。为了避免多次发送消息,我考虑采用如下设计模式: class Event < ActiveRecord::Base has_many :users around_save :contact_added_users def contact_added_users existing_users = self.users yield adde

我的Rails应用程序包含事件和用户。如果用户被添加到事件中,无论是创建新事件还是更新现有事件,我都需要向用户发送消息。为了避免多次发送消息,我考虑采用如下设计模式:

class Event < ActiveRecord::Base
  has_many :users
  around_save :contact_added_users

  def contact_added_users
    existing_users = self.users
    yield
    added_users = self.users.reject{|u| existing_users.include? u }
    added_users.each { |u| u.contact }
  end
end

用户只能参加一个活动?还是更多的事件?@rmagnum2002这是一个非常简单的例子。事实上,一个用户可以参与很多活动,所以有一个参与模型。很好,我假设每次创建或编辑一个活动时,您可以一次添加多个用户?是吗?@rmagnum2002是的,没错,伊万,用ActiveModel::Dirty把这个带到用户模型上怎么样?“保存之前:使用你的魔法”和def使用你的魔法{如果事件id改变了?等等}
ActiveAdmin.register Event do
  controller do
    around_filter :contact_added_users

    def contact_added_users
      @event = Event.find(params[:id])
      existing_users = @event.users
      yield
      added_users = @event.users.reject{|u| existing_users.include? u }
      added_users.each { |u| u.contact }
    end
  end
end