すんません、なんか謎な不具合が起きたので調整が必要ですね。
user1の投稿に対してuser2 がコメントすると user2がuser1に置き換わってコメントが投稿されてしまうエラーが起きて、
ログをみた感じだとuser: diary.user
のuserの定義が抜き取られてコメントの所有者が投稿者に差し代わってしまうので、
調整しています。。
だいそんさんにご指摘があり修正が完了しました、ありがとうございました
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",
多分if !self.user = diary.user
でComment
リソースのモデルが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"
if !self.user = diary.user
ではなく
if !self.user == diary.user
ですかね。
さらにいうとdiary.user
とするとSQLが発行されてしまうので
if !self.id == diary.user_id
の方が良いと思います。
そしてさらにいうと
if id != diary.user_id
で良いと思います。
なるほど、user_idであればモデル内で完結しますね。
基本的なおさらいも含めて復習しないとですね。
ありがとうございます