初めまして、Ruby初学者です。
ご教授頂けますと幸いです。
post.rb
ruby
1has_many: comment
comment.rb
belongs_to: post
という関係のpostとcommentモデルがあります。
postの方で、引数に与えたcomment以外のcommentを取得するsearch_comment
メソッドがあります。
comment.rb
ruby
1def search_comment 2 comments.where.not(id: comment.id) 3end
・・・service.rb
@comment = @post.search_comment
しかし、postとcommentは1対多なので、このように書き換えることもできるかなと思ったのですが、
このケースだと上手くいきません。
post.rb
ruby
1def other_comment 2 where.not(id: comment.id) 3end
・・・service.rb
@comment = @post.comments.other_comment
デバッグすると@post.comments
がarrayクラスになっているからだとは思うのですが・・・
対して、comment.rb
のsearch_comment
でcommentsだけをデバッグするとActiveRecord_Associations_CollectionProxy
となっているからwhereを使えるのはわかるのですが、
なんで下記のやり方だと、リレーションを辿っているのに(@post.comments
)ActiveRecord_Associations_CollectionProxy
クラスにならないでarrayクラスになってしまうのかわかりません。
どなたかご教授頂けますと幸いです。
回答1件
あなたの回答
tips
プレビュー