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,…)。我真的不认为挂钩或使用可观察模块会比这更好。