세 가지 다른 관계를 결합한 관계를 만들려고합니다. 처음 3 가지는 모두 같은 클래스이고, 나는 대기업이되고 싶습니다. 그러나 좋은 "arel"방법을 찾을 수는 없습니다.Ruby on Rails : 세 가지 다른 관계를 결합한 관계를 만듭니다.
다음은 내가하려는 일의 예입니다. 작동
SQL 쿼리는 물론
SELECT `records`.* FROM `records` INNER JOIN `memberships` ON `records`.`subject_membership_id` = `memberships`.`id` OR `records`.`recorder_membership_id` = `memberships`.`id` OR `records`.`subject_membership_id` = `memberships`.`id` WHERE `memberships`.`group_id` = 4
, 난 레일 방식으로 그렇게하고 싶다. 여기까지 내가 지금까지 가지고있는 것이있다. 그것은 꽤 자기 설명 적이어야합니다, 그래서 나는 그것을 더 설명하는 당신의 시간을 낭비하지 않을 것입니다.
class Group < ActiveRecord::Base
has_many :recorded_records, :through => :memberships, :source => :recorded_records, :class_name => "Record"
has_many :reported_records, :through => :memberships, :source => :reported_records, :class_name => "Record"
has_many :reviewed_records, :through => :memberships, :source => :reviewed_records, :class_name => "Record"
#has_many :records through recorded_records, reported_records, reviewed_records??
# Psuedo code above... Wondering how best to do this. I've tried...
def records
recorded_records | reported_records | reviewed_records
end
# But that makes three seperate database queries when what I really want is...
# SELECT `records`.* FROM `records` INNER JOIN `memberships` ON `records`.`subject_membership_id` = `memberships`.`id` OR `records`.`recorder_membership_id` = `memberships`.`id` OR `records`.`subject_membership_id` = `memberships`.`id` WHERE `memberships`.`group_id` = 4
end
여러분! 고마워 :)
'회원'모델 콘텐츠를 표시 할 수 있습니까? –