2015-01-20 3 views
0

나는 레일 방식으로이 쿼리를 사용하고 싶습니다. 아무도 나를 도와 줄 수 없습니까?레일 4 SQL 쿼리 레일 방법

select * from users 
    ,buyer_events 
    ,supplier_events 
where (users.id = buyer_events.buyer_id 
     or users.id = supplier_events.supplier_id) 
     and supplier_events.event_id = 11 
     and buyer_events.event_id = 11; 

PostgreSQL을

자세한 정보가 필요한 경우, 댓글 : 내가 이런 식으로 뭔가해야한다 생각

+0

어디서 일치하는 모든 사용자를 선택해야합니까? –

+0

@ МалъСкрылевъ 그는 모든 사용자가 아닌 테이블 사용자의 모든 열을 선택합니다. – zwippie

+0

에는 buyer_events와 supplier_events라는 두 개의 별도 테이블이 있습니까? –

답변

0
class User < ActiveRecord::Base 
    ... 
    def self.buyers_and_suppliers user_id 
    joins(:buyer_events, :supplier_events).where(users: {id: user_id}, supplier_events: {event_id: 11}, buyer_events: {event_id: 11}) 
    end 
    ... 
end 
1

에 쓰기 : 다음

class User 
    has_many :supplier_events 
    has_many :buyer_events 

    scope :with_event, ->(event_id) { 
    joins(:supplier_events, :buyer_events).merge(supplier_events.for_event(event_id)).merge(buyer_events.for_event(event_id)) 
    } 
end 

class SupplierEvent 
    belongs_to :supplier, class_name: :User 
    belongs_to :event, class_name: :Event 

    scope :for_event, ->(event_id) { where(event_id: event_id) } 
end 

class BuyerEvent 
    belongs_to :buyer, class_name: :User 
    belongs_to :event, class_name: :Event 

    scope :for_event, ->(event_id) { where(event_id: event_id) } 
end 

문제 :

User.with_event(11)