既読ユーザー
自分のリソースに連動したモデルへの通知は作成しない
ディスカッション
  • siriusjunior 2021/11/22 06:59

    すんません、なんか謎な不具合が起きたので調整が必要ですね。
    user1の投稿に対してuser2 がコメントすると user2がuser1に置き換わってコメントが投稿されてしまうエラーが起きて、
    ログをみた感じだとuser: diary.userのuserの定義が抜き取られてコメントの所有者が投稿者に差し代わってしまうので、
    調整しています。。

    追記

    だいそんさんにご指摘があり修正が完了しました、ありがとうございました

  • siriusjunior 2021/11/22 07:43

    debuggerの分析

    comment.rb
    def create_activities
    Activity.create(subject: self, user: diary.user, action_type: :commented_to_own_diary)
    binding.pry
    end

    [1] pry(#Comment)
    self

    Comment:0x00007fdaa68515c8
    id: 45,
    body: "テスト",
    diary_id: 1,
    user_id: 15,
    [2] pry(#Comment)
    self.user
    → #User:0x00007fdaa6849850
    id: 15,
    email: "user2@gmail.com",

  • siriusjunior 2021/11/22 07:50

    多分if !self.user = diary.userCommentリソースのモデルがdiary.userになぜか差し変わる・・

    def create_activities
    if !self.user = diary.user
    Activity.create(subject: self, user: diary.user, action_type: :commented_to_own_diary)
    end
    binding.pry
    end

    [26] pry(#Comment)
    self
    =>#Comment:0x00007fda9e5dc390
    id: 46,
    body: "テスト",
    diary_id: 1,
    user_id: 1,
    [27] pry(#Comment) self.user
    =>#User:0x00007fdaa59ea750
    id: 1,
    email: "foobar@gmail.com"

  • daidai3110 2021/11/22 09:35
    if !self.user = diary.user
    

    ではなく

    if !self.user == diary.user
    

    ですかね。

  • daidai3110 2021/11/22 09:36

    さらにいうとdiary.userとするとSQLが発行されてしまうので

    if !self.id == diary.user_id
    

    の方が良いと思います。

    そしてさらにいうと

    if id != diary.user_id
    

    で良いと思います。

  • siriusjunior 2021/11/22 10:07

    なるほど、user_idであればモデル内で完結しますね。

    基本的なおさらいも含めて復習しないとですね。
    ありがとうございます