1
に、私は次のモデルを持っていますRailsのカスタム複数のテーブル関係
class Girl < User
has_many :photos, dependent: :destroy
has_one :info, :dependent => :destroy
end
class Photo < ActiveRecord::Base
belongs_to :girl
end
class Info < ActiveRecord::Base
belongs_to :girl
end
私は写真を使用してクエリを行う必要があり、私も女の子についての情報を取得する必要があると私は熱心な負荷情報にしたいですその女の子のために(それはすべての女の子がそれを持っていることは必須ではありません)。
私はPhoto.joins(:girl).includes(:info)
に似た何かをしたいが、私はそれを実行しようとするとき、それは(明らかに)このエラーの原因となって、フォトテーブルに情報を関連付けるために試してみてください。
ActiveRecord::AssociationNotFoundError: Association named 'info' was not found on Photo; perhaps you misspelled it?
どのように私はこのカスタムには、することができます複数のテーブルのクエリで?
EDIT
は私がPhoto.joins(:girl).includes(:girl => :ad_info).where("photos.approved = 1 and users.profile_approved = 1")
を使用して、それを解決したと思いますが、私は、コンソールをチェックしたとき、私は私が持っているべきではないad_infoクエリがたくさんあります。
私は写真で質問しなければならないので、これは私のニーズに合っていません。私は主な問題を解決したと思うが、役に立たないクエリはまだそこにある。私の編集を確認してください –
あなたの質問ではないことを知っています。しかし、なぜ別の情報モデルを使用するのですか、Girlモデルとの1対1の関係です。情報テーブルの列を少女テーブルに追加するだけで、はるかに簡単です。 –
私はこれを行うことにしました。なぜなら、女の子の2%未満がその追加情報テーブルを持つため、私はヌルの列をたくさん避けたかったからです。あなたはそれについてどう思いますか? –