2016-12-06 18 views
3

これに対する答えはどこからでも探しています。Rails 5 has_manyの動的条件

has_one :region_location, ->(location) { where("region_locations.site_id = ?", location.current_site.id) if location.current_site } 

このコードは、開発環境で次の例外を生成しています。

「は関連スコープ 『region_location』は依存インスタンス( スコープブロックが引数を取る)。 がサポートされていないインスタンス依存スコープをプリロードです。」

これはRails 4では可能でしたが、5(Rails has_many with dynamic conditions)ではできませんでした。どんな提案も大歓迎です。私はそれを代わりにインスタンスメソッドにすることを考えましたが、以下の関連付けも使用します。

has_one :region, :through => :region_location 

答えて

0

代わりにインスタンスメソッドにすることもできます。例えば

def region_location 
    RegionLocation.find_by_site_id(self.current_site.id) if self.current_site 
end 

と第二の部分は、ちょうど

+0

おかげで、同じ機能を維持しながら、あなたのために、この問題を解決する必要があり

delegate :region, to: :region_location, allow_nil: true 

である可能性があります。これはうまくいくようです。確かに物事を遅くするが、太陽黒点solrで私はできない:この方法で定義された関係でもう含まない。 –

+0

@BenScheib hmmmそれはちょっと難しいです。解決策を見つけるためにレールのソースを掘り下げなければならないかもしれない – engineersmnky

関連する問題