

e.g)

[code]

    class A < ActiveRecord::Base
       scope :under_100 -> { where(id < 100 ) }
    end
    
    class B 
      has_one :a
      # under_100を使いたい
    end
    
[/code]

railsのscopeをdelegateなどを使って委譲させる方法はありますか？？  
moduleを使わないと難しいですかね。


CC BY-SA 3.0
2015-11-21T03:31:40.583
19111
2015-11-21T08:18:35.497
12758
question
ruby-on-rails
【Rails】scopeの委譲のやり方を教えて下さい。


mergeを使うと関連先のscopeを使うことができます。

[code]

    class B < ActiveRecord::Base
      has_one :a
      scope :a_under_100, -> { joins(:a).merge(A.under_100) }
    end
    
    # 関連するAのidが100以下であるBのリストが返る
    B.a_under_100
    
[/code]

が、ちょっと情報が少ないので、やりたいことがこれで合っているか確信がありません。  
もし違っていたら、具体的なデータベースの値と期待する結果の例を追記してください。


CC BY-SA 3.0
2015-11-21T08:18:35.497
19122
2015-11-21T08:18:35.497
85
19111
answer