37533


Railsのhas_many, belongs_toを両方のモデルで指定する必要性はなんなのでしょうか。

Railsチュートリアル（<https://railstutorial.jp/book/ruby-on-rails-
tutorial?version=4.2#sec-demo_user_has_many_microposts>）  
の例を見ると片方にはhas_manyを、もう片方にはbelong_toを指定しています。

ですが、私の経験上has_manyだけ指定してbelong_toは書かなくても、joinする分には困らないなとの認識です。

  1. 両方のモデルで指定する必要があるか？
  2. 必要が無い場合は、両方のモデルで指定するメリットは何か？

この２点についてアドバイスいただけると助かります。


CC BY-SA 3.0
2017-08-28T02:05:25.873
37532
2017-08-28T02:38:34.293
25065
question
ruby-on-rails
Railsのhas_many, belongs_toを両方のモデルで指定する必要性について


1、あくまでリレーションなので、モデル間で参照がない場合はhas_manyやbelongs_toは必要ないです。

例えば  
CategoryがBookを複数持っている時

[code]

    class Category < ApplicationRecord
      has_many :books
    end
    
[/code]

は`category.books`でそのカテゴリーに含まれている本を全て取得できます。  
一方でcontrollerなどのコード中に`book.category`、この本がどのカテゴリーに含まれているかという参照がないなら

[code]

    class Book < ApplicationRecord
      belongs_to :category
    end
    
[/code]

の記述は無くてもよいです。

２、に関してですが、コードを見た時にリレーションがわかりやすいくらいだと思います。

個人的な感想ですが、あった方がモデル間の関係がわかりやすくなるので、  
特に理由がなければ、書いてあった方が良いと思います。


CC BY-SA 3.0
2017-08-28T02:27:42.190
37533
2017-08-28T02:38:34.293
2017-08-28T02:38:34.293
5436
5436
37532
answer