2016-12-04 5 views
0

私は1つが、親切に、これが書かれている方法を私に助言することができ "Management Group"または"Event Management Group"足すスコープはJOINS - Railsの4

内にあるユーザーを表示するスコープを書きたいと思います。

私は成功し、以下の範囲足すことにより、「管理グループ」のユーザーを表示することができます。

user.rb 

scope :hosts, ->() { joins(:category_managementgroup).where('category_managementgroups.name' => "Management Group") } 

をi」が「管理 グループ」の両方のユーザーを表示し、スコープを書くだろうかイベント管理グループ」

私は以下を試してみましたが、動作しません:

scope :hosts, ->() { joins(:category_managementgroup).where('category_managementgroups.name' => "Event Management Group") && joins(:category_managementgroup).where('category_managementgroups.name' => "Management Group") } 

は、私はまた、以下が、運を試してみました:

scope :hosts, ->() { joins(:category_managementgroup).where('category_managementgroups.name ? OR', "Event Management Group", "Management Group") } 

あなたの助けがずっと

答えて

1

が役に立てば幸いIN

scope :hosts, -> { joins(:category_managementgroup).where("category_managementgroups.name IN (?)", ["Management Group", "Event Management Group"]) } 

を使用してみてください!

+1

すべてのsooをありがとう!とても有難い! – ARTLoe

2

ちょうど適切ActiveRecordの構文を使用して、あなたが期待しているものを手に入れるだろういただければ幸いです

scope :hosts, -> { 
    joins(:category_managementgroup) 
    .where(category_managementgroups: { name: ["Event Management Group", "Management Group"] }) 
} 

このスコープは、Event Management GroupまたはManagement Groupにいるユーザーを表示します。

+1

を抜け出す必要があります。そのレールの道はそれを行う –

1

多分これは仕事ができる:

scope :hosts, ->() { joins(:category_managementgroup).where('category_managementgroups.name' => "Event Management Group").joins(:category_managementgroup).where('category_managementgroups.name' => "Management Group") } 
1

あなたは@ARTLoeこのクエリは、クエリで生成されます、あなたの他のスコープ

User.rb

scope :hosts_in_any_management, -> { joins(:category_managementgroup).merge(CategoryMangagementgroup.in_management)} 

scope :hosts_in_both_management_groups, -> { joins(:category_managementgroup).merge(CategoryMangagementgroup.both_management_groups) } 

CategoryManagementgroup.rb

scope :in_management, -> { management_group.or(CategoryManagementgroup.event_management_group) } 

scope :both_management_groups, -> { event_management_group.management_group } 

scope :event_management_group, -> { where name: 'Event Management Group'} 
scope :management_group, -> { where name: 'Management Group' } 
関連する問題