2011-03-01 2 views
2

개체를 정의하는 PHP에서 응용 프로그램을 ROR로 마이그레이션하고 있습니다. 응용 프로그램의 등록 사용자이거나 익명 사용자 인 사용자가 만들 수있는 문서라고합시다. 누가 자신의 이메일 주소 (이 경우에는 연관된 사용자 계정없이) 만 제공합니다. 방문자가 사용자 계정을 만들 필요는 없지만 문서를 만들 수 있어야합니다.Ruby의 임의 belongs_to 관계

내 모델에서는 먼저 belongs_to 연관을 사용하여 사용자를 참조하는 문서 모델을 만들었습니다. 그러나 이것이 항상 그런 것은 아닙니다. 순수한 SQL과 PHP에서는 어려운 일이 아니지만 문제는 있지만 "purest"Ruby/Rails 방식으로 모델링하고 싶습니다.

방문자가 연결된 사용자가없는 경우 전자 메일 주소는 문서 개체에 직접 저장됩니다.

토론을 시작하려면 다음은 각 모델에 대한 스 니펫입니다.

user.documents 

또한 문서가 사용자 또는 경우에 속하는지 확인하기 위해 역 관계를 확인하기 위해 :

# user.rb 
class User < ActiveRecord::Base 
    has_many :documents 
end 

# document.rb 
class Document < ActiveRecord::Base 
    attr_accessible :title, :description, :email_address 

    belongs_to :user 
end 

내 목표는 표준 점 표기법을 사용하여 모든 사용자의 문서를 검색 할 수있다 이메일 주소가 포함되어 있습니다.

if document.user.nil? ... 

if document.email_address.nil? ... 

has_one 관계를 읽었지만 올바른 경로인지 확인하지 못했습니다.

도움이나 의견을 보내 주시면 감사하겠습니다.

+1

당신은 다소 자신을 대답했습니다. 코드는 사용자의 목적에 맞게 잘 작동해야합니다. –

+0

Jakub에게 감사드립니다. 문제가 발생하면 여기에있는 내용으로 업데이트하겠습니다. –

답변

0

익명 사용자를 지원하고 전자 메일 주소 만 저장하도록 User 클래스를보다 유연하게 만들 것을 고려할 수 있습니다.

코드를 조금 더 깨끗하게 만들 수 있습니다.

+0

필자는이 방법이 필수 필드가 모델 정의에 정의되어 있으므로 사용자 모델 유효성 검사를 복잡하게 만들 수 있습니다. 나는 그 부분을 언급하지 못했다고 생각한다. 미안하다. 그래도 제안에 감사드립니다! –