(本質的な)結論
単数形と複数形を意識する。
実例
User
モデルとTweet
モデルがあるとする。
アソシエーション
アソシエーションを以下のように定義した(してしまった)とする。has_many :tweets
ではなくhas_many :tweet
と、単数形で定義している。
class User < ActiveRecord::Base has_many :tweet end class Tweet < ActiveRecord::Base belongs_to :user end
joins する
このとき、以下の書き方だとエラーになる*1。
User.joins(:tweets)
そしてこう書くと通る(通ってしまう)。
User.joins(:tweet)
つまり
has_many
の引数は複数形でなければいけない
が、単数形でもそれなりに通ってしまう
(結果は同じ)。が、SQL 文に展開されると誤った記述だと当然ながらエラーになる。
*1:厳密には下記の時点ではエラーにはならないが