레일즈는 has_one :through
연관성을 가지고있어 두 번째 모델을 통해 세 번째 모델과 일대일 연관성을 설정할 수 있습니다. 바로 가기 연결을 만드는 것 외에 다른 것을 사용하는 것이 무엇이겠습니까?레일스 has_one : 연관성을 통해
supplier.account.history
은 그것의 경우 그렇지 않은 경우로 도달 할 것
supplier.account_history
:
class Supplier < ActiveRecord::Base
has_one :account
has_one :account_history, :through => :account
end
class Account < ActiveRecord::Base
belongs_to :supplier
has_one :account_history
end
class AccountHistory < ActiveRecord::Base
belongs_to :account
end
우리가 그런 짓을 할 수 있습니다
레일 guide에서이 예제를 촬영 더 간단한 접근을 위해서만 기술적으로 거기에 1 대 1 협회 그쪽 수 있습니다. t는 모델을 n 번째 모델로 연결하여 일부 모델을 n-1 모델로 연결하여보다 쉽게 액세스 할 수 있도록합니다. 바로 가기 외에 누락 된 것이 있습니까?
논리 인수가 매우 유효하다고 생각합니다. 더 자연스러운 말처럼, 공급 업체의 계정 기록이 아닌 해당 공급 업체의 계정 기록을 얻으십시오. Ruby/Rails가 코드가 아닌 문장을 전달한다는 철학을 생각할 때 매우 미묘하지만 여전히 기억하기 쉽습니다. 나는 실제 DB 쿼리가 발행되는 것을 볼 수 있지만 Rails는이 메소드 호출을 SQL로 변환하는 방법을 지정합니까? – Anurag
이것은 또한 Demeter의 법칙을 위반하는 것을 방지합니다. –
@TomCrayford, 나는 그것이 실제로 어떻게 보이지 않습니다. 이것은 관계를 덜 직접적으로 만들어주지 않습니까? –