インスタンスレベルの制約は、reils 3.1のhas_many、:throughの関係で設定できますか?has_many:throughインスタンス固有の条件
http://guides.rubyonrails.org/association_basics.html#the-has_many-association
のようなもの:ドキュメントは、私はこれを期待し得られますが、それは私のために動作しません
Class A
has_many :c, :through => :b, :conditions => { "'c'.something_id" => @a.something_id }
:
あなたは時に動的に条件を評価する必要がある場合実行時に 文字列補間をシングルクォートで使用することができます。
class Customer < ActiveRecord::Base
has_many :latest_orders, :class_name => "Order",
:conditions => 'orders.created_at > #{10.hours.ago.to_s(:db).inspect}'
end
これにより、レール3.1に「認識されないトークン「#」」が表示されます。この機能がもう機能しないのだろうか?
EDIT
は、私はスコープが解決されているとは思わない理由を明確にしたいです。 Aのインスタンスから取得できるようにしたいのは、(Aのインスタンスの属性に基づく)条件を持つすべてのCです。スコープでこれを行うには、スコープをCに入れて引数をとり、それからある値で@aからコールする必要があります。なぜ私のhas_manyクエリに直接組み込むよりも優れているのですか?
はい。ソートする場合でも、関係する節を条件と混同しないでください。それは間違ったやり方を考えているでしょう。 –
私はスコープで私の例でやろうとしているhas_manyをどのように複製するのですか?私は自分の条件でprocを使って動作させているので、なぜこれが良いのか分かりません。私は私の場合、Aは実際には条件が成立するhas_many "C"しか言及していない。他の結果は関連付けられておらず、返さないと意味がありません – spike
説明した方法でスコープを使用する必要があります。関係はモデル間であり、「latest_order」はモデルではなく、モデルのスコープです。 Railsのタグラインは "働き過ぎのコンベンション"であり、ここではコンベンションでスコープを使用しています。 – bricker