2016-09-30 10 views
0

は、私はこの方法でhas_oneの関連を拡張しようとしました:ActiveRecordの `has_one`協会の拡張メソッド

has_one :subscription_plan, -> { where current: true } do 
    def in newspaper 
    where newspaper: newspaper 
    end 
end 

とエラーundefined method 'in' for #<SubscriptionPlan...>

を得たが、それはhas_manyで動作します:

has_many :subscription_plans, -> { where current: true } do 
    def in newspaper 
    where(newspaper: newspaper).take 
    end 
end 

Rails 4.2.1でhas_oneを使用するにはどうすればいいですか?

答えて

0

has_manyにアクセスすると、SubscriptionPlan::ActiveRecord_Associations_CollectionProxyが表示されますが、has_oneと入力すると、SubscriptionPlanというインスタンス自体が表示されます。

ここには何も拡張されていません。

あなたのモデルに関する詳細情報を提供したい場合は、正確なコードをお伝えします。

+0

thanx多く! ActiveRecord docs http://guides.rubyonrails.org/association_basics.html#association-extensionsはちょっと混乱します。「拡張機能は、proxy_associationアクセサの次の3つの属性を使用して、関連付けプロキシの内部を参照することができます: proxy_association。 targetは、belongs_toまたはhas_oneの関連オブジェクト、またはhas_manyまたはhas_and_belongs_to_manyの関連オブジェクトのコレクションを返します。それは 'has_one'が言及されているドキュメントの間違いですか? – yurko

+0

私はそれがエラーだとは思わないが、今私はそれをコメントすることはできません=) – Aleksey