[RUBY-ON-RAILS] 레일 : 액티브 쿼리 협회 값을 기준으로
RUBY-ON-RAILS레일 : 액티브 쿼리 협회 값을 기준으로
나는이 개 모델이있다. belongs_to와 has_many 관계를 가지고 보고서 및 서버. 나는 보고서 관련 Server.company_id을 찾을 수 있습니다 대리자를 사용하여 접근 방법을 만들었습니다. 지금, 나는 나 5의 특정의 COMPANY_ID 속성이 특정 서버와 관련된 모든 보고서를 찾을 수 있도록 보고서에 쿼리를 실행합니다.
여기 내 두 모델이다. 보고서 속성 COMPANY_ID이 없기 때문에 그리고 네 나는 현재 쿼리 못해 일을 알고있다.
그리고 아니, 그 정보는 보고서에 속해 있지 않기 때문에 보고서의 COMPANY_ID 내부를 저장할니까.
보고서
class Report < ActiveRecord::Base
belongs_to :server
delegate :company_id, :to => :server
class << self
def method(url, base_url)
#Report.where(company_id: 5)
end
end
end
섬기는 사람
class Server < ActiveRecord::Base
attr_accessible :company_id
has_many :reports
end
해결법
-
==============================
1.이 같은 쿼리를 수행 할 수 있습니다 :
이 같은 쿼리를 수행 할 수 있습니다 :
Report.joins(:servers).where(:servers => {:company_id => 5})
나를 위해,이 원시 SQL에 청소기 솔루션입니다.
-
==============================
2.나는 레일 4.1.7를 사용하고 있는데 허용 대답은 나를 위해 작동하지 않았다. 작품은 무엇을했다
나는 레일 4.1.7를 사용하고 있는데 허용 대답은 나를 위해 작동하지 않았다. 작품은 무엇을했다
Report.joins(:server).where(:servers => {:company_id => 5})
(: 서버 대신 : 서버)의 차이가 절을 복수로되어있는 키가 있습니다
-
==============================
3.이 트릭을 할해야
이 트릭을 할해야
Report.joins(:server).where('servers.company_id = ?', 5)
당신은 또한과 같이 이것에 대한 범위를 추가 할 수 있습니다
scope :with_company_id, lambda {|id| joins(:server).where('servers.company_id = ?', id) }
다음 쓰기
Report.with_company_id(5)
-
==============================
4.Server.where (COMPANY_ID : 5) .first.reports
Server.where (COMPANY_ID : 5) .first.reports
from https://stackoverflow.com/questions/19489017/rails-activerecord-query-based-on-association-value by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일의 긴 문자열에 열 유형 변경 (0) | 2020.03.01 |
---|---|
[RUBY-ON-RAILS] 어떻게 레일 아래에 WEBrick에서 설정 액세스 제어 - 수 - 원점? (0) | 2020.03.01 |
[RUBY-ON-RAILS] 레일 타임 스탬프 필드를 업데이트 자동으로 방지 할 수있는 방법이 있나요? (0) | 2020.03.01 |
[RUBY-ON-RAILS] 레일에 구축하고 새로운 차이점은 무엇입니까? (0) | 2020.03.01 |
[RUBY-ON-RAILS] 400 잘못된 요청 - 요청 헤더 너무 큰 쿠키 (0) | 2020.03.01 |