User and Notification モデル、User has_many Notification があります。通知はカミナリによってページングされます: 通知モデルの定義、
class Notification
...
field read, type: Boolean, default: false
belongs_to :user
scope :recent, ->(source) { where(source: source).desc(:created_at) }
...
end
通知コントローラーでは、
@notifications = current_user.notifications.recent(@source).page(params[:page])
次に、現在のページをレンダリングした後に read 属性を true に変更したいのですが、うまくいきません:
@notifications.update_all(read: true)
read属性はそこで変更されていません。また、1つのトリッキーなことがあります:
- スコープ ディレクティブ (recent) を削除すると、update_all は機能しますが、現在のユーザーだけでなく他のすべてのユーザーも更新されます。
シン サーバーにいくつかのログがありますが、エラーは見つかりません。
MOPED: 127.0.0.1:27017 UPDATE database=cse_development collection=notifi
cations selector={"$query"=>{"user_id"=>"509765c42061c79036000004", "source"=>"t
opic"}, "$orderby"=>{"created_at"=>-1}} update={"$set"=>{:read=>true}} flags=[:m
ulti] (0.9999ms)
私は何かが恋しいですか?
前もって感謝します!