我正在构建一个rails服务器,其中一些用户跟踪其他用户位置的更改,并在每次更新位置时通过websockets获得通知。
目前我调用update_location操作而不是调用常规更新以更新位置并调用WebsocketRais触发器。这对我来说似乎很奇怪,我认为应该有更好的方法。
我所知道的唯一其他选项是调用更新操作并检查位置是否已更新,并通知订阅者。这对我来说似乎也很难看。
我希望能够以某种方式覆盖资源的Rails更新,并在每次更新位置属性时通知订阅者 - 类似于location属性的setter方法,其他事情不仅仅是设置。它甚至可能吗?我怎么能这样做?
答案 0 :(得分:0)
我认为可以采用单独的方法。但是,如果你想要补丁update_attributes
,你可以像这样写:
def update_attributes(attrs)
update_location = attrs.delete(:update_location)
super.tap { notify if update_location }
end
或者您可以使用自定义attr&回调:
after_update :notify, if: :need_notify
attr_accessor :need_notify
# then
user.update_attributes location: smth, need_notify: true