Ruby on rails 观察rails和mongoid中的字段

Ruby on rails 观察rails和mongoid中的字段,ruby-on-rails,mongoid,observers,Ruby On Rails,Mongoid,Observers,我有一个用户模型和追随者,追随者 用户模型 has_and_belongs_to_many :followers, class_name: 'User', inverse_of: :following has_and_belongs_to_many :following, class_name: 'User', inverse_of: :followers 追随者 has_and_belongs_to_many :followers, class_name: 'User', inverse_o

我有一个
用户
模型和
追随者
追随者

用户模型

has_and_belongs_to_many :followers, class_name: 'User', inverse_of: :following
has_and_belongs_to_many :following, class_name: 'User', inverse_of: :followers
追随者

has_and_belongs_to_many :followers, class_name: 'User', inverse_of: :following
以下内容

has_and_belongs_to_many :followings, class_name: 'User', inverse_of: :followers
我有一个
UserObserver
,它应该查看用户
follower\u id
是否发生了变化,然后将其添加到用户
活动中


那么,我如何才能只在
follower\u id
中查看更改,并获取最新的用户
id
,将其放入
活动中
我认为,在这种情况下,最好的选择是将添加新follower的逻辑封装在一个方法中,在这个方法中,您可以触发任何您想要的:

#encoding: utf-8
class User
  include Mongoid::Document
  field :followers, type: Array
  attr_readonly :followers

  def add_new_follower(new_follower)
    unless followers.include?(user) 
      followers << user 
      trigger_added_follower_observers(user)
    end
  end

  private
  def trigger_added_follower_observers(new_follower)
    # trigger the stuff you want
  end
end
编码:utf-8 类用户 include Mongoid::Document 字段:followers,类型:Array attr_只读:追随者 def添加新跟随器(新跟随器) 除非是追随者。包括?(用户)
你能告诉我怎么做吗?因为触发器可能与此配合使用,但我希望有一个类可以自行处理用户活动,比如有一篇新文章而不仅仅是新的关注者,让触发器到处运行是不好的代码您可以将#trigger_added_follower_observer方法替换为#call_observer并更改该方法的签名以接收标识符(符号),以识别模型的哪一部分已更改。然后,在方法内部,您将实例化您的UserObserver传递self(用户)和已更改内容的标识(:followers,:posts,…)。我真的不认为挂钩或使用可观察模块会比这更好。