私は2つのモデルを持っています:
class Wine
belongs_to :region
end
class Region
has_many :wines
end
たとえば、特定の要素を params ハッシュからクエリ ハッシュに変換して構築されたハッシュで #where メソッドを使用しようとしています。{ :region => '2452' }
def index
...
@wines = Wine.where(hash)
...
end
しかし、クエリの実行時に列が存在しないというエラーが表示されるだけです。
ActiveRecord::StatementInvalid: PGError: ERROR: column wines.region does not exist
LINE 1: SELECT "wines".* FROM "wines" WHERE "wines"."region" =...
もちろん、テーブルwines
にはregion_id
あるので、代わりにクエリを実行してregion_id
もエラーは発生しません。
質問は次のとおりです。
メソッドでを使用してWine
特定のオブジェクトをクエリする Rails-y の方法はありますか? 私ができることを知っていることに基づいて、いくつかのオプションを以下にリストしました。regions
id
#where
オプション 1: クエリ ハッシュを作成する方法を変更して、各フィールドが持つように_id
すること{ :region_id => '1234', :varietal_id => '1515' }
ができます。いいえ。Wine
belongs_to
_id
オプション 2: SQL の where 句を作成します。ここでも何らかのロジックを使用して、id を使用するか、別のテーブルに対して結合するかを決定します。ロジックはやや複雑になり、SQL を掘り下げると、レールのように感じにくくなります。または、その面で間違っている可能性があります。
オプション 3..n: 私が考えていないこと... あなたの入力はここに入ります :)