困っていること
ターミナル上でpryをかけるとidだけ取り出す事ができるのに、view側で同じことをしようとすると、undefined method `id' for nil:NilClass
になってしまう。
ruby
1# teminal上 2current_user.like.find_by(answer_id: a) 3=> #<Like:0x00007fddf10aaf88 id: 2, user_id: 2, answer_id: 1, status: 1, created_at: Mon, 21 Oct 2019 02:50:00 JST +09:00, updated_at: Mon, 21 Oct 2019 02:50:00 JST +09:00> 4current_user.like.find_by(answer_id: a).id 5=> 2
実現したいこと
view側でもターミナル上で取れたようにidだけ取得出来るようにしたい。
ruby
1# questions_controller 2def show 3 @question = Question.find_by(id: params[:id]) 4end 5 6# answer model 7 has_many :likes, class_name: 'Like', foreign_key: 'answer_id' 8 belongs_to :user, optional: true 9 10 def like(id, answer_id) 11 Like.find_by(user_id: id, answer_id: answer_id).status.to_i 12 end 13 14# question model 15 belongs_to :user, optional: true 16 has_many :answers, class_name: 'Answer', foreign_key: 'question_id' 17 18# user model 19 has_many :like, class_name: 'Like', foreign_key: 'answer_id' 20 21# view 22 - @question.answers.each do |a| 23 = current_user.like.find_by(answer_id: a).id 24 # .idとすると落ちる
current_userは取れていて、リレーション関係になっているlikeまでのレコードも取れています。
ちなみにfind_byをwhereにしてpluck(:id)にするとidは取れます。
しかし、pluckでカラムを取得すると配列で値を受け取ってしまうのでwhere以外のfind_byで取ろうとしています。
落ちる手前のview側でbinding.pryかけたターミナル上で.idまで取得出来るのですがview側で同じことをしようとすると落ちてしまいます。