2012-05-28 2 views
3

ID 및 이름 필드 (활성, 비활성, 보류 중 등) 만 포함하는 상태 테이블이 있습니다. 그런 다음 각각에 status_id 외래 키가 포함 된 사용자, 업적, 배지와 같은 표가 있습니다. 내 모델의 연관성이 올바른지 확인하십시오.조회 테이블에 대한 레일 연결

class Status < ActiveRecord::Base 
    has_many :achievements 
    has_many :badges 
    has_many :users 
end 

class User < ActiveRecord::Base 
    belongs_to :status 
end 

class Badge < ActiveRecord::Base 
    belongs_to :status 
end 

class Achievement < ActiveRecord::Base 
    belongs_to :status 
end 

나는 제대로 조회 테이블의 경우 has_one과 has_many의 차이를 읽는 방법에 고민하고있다. 나는 사용자가 한 회사를 가지고 있고 하나의 프로필을 가지고 있고 회사는 많은 사용자를 가지고 있지만 이것이 나에게 거꾸로 보인다는 것을 안다.

답변

8

간단한 연결 설정은 다음과 같습니다

class User < ActiveRecord::Base 
    has_one :status 
end 

정확히 당신이 게시 한 내용을 설명하는. 당신의 솔루션은 효과가 있지만, 당신이 묘사 한 것에는 과잉이다. 내가 할 것 위에 게시 된 모든 협회 반면에 특정 상태로 모든 사용자를 보여주는 간단한 의미를 원한다면

@user = User.find(1) 
@user.status 

즉, 사용자 모델에 하나의 방법을 추가 할 것입니다, 당신은

를 추가 할 것
class Status < ActiveRecord::Base 
    has_many :users 
end 

그래서 지금 당신이 할 수 있습니다 :

@status = Status.find_by_description('Active').first() 

@status.users 

참고 사용자 모델 속성을 가지고 모두의 경우, 필요한 모든 것을 것을

'status_id' 암시 적 계층 구조가있을 때

Belongs_to 내가, 전자, 자세한 답변을

class Child << ActiveRecord::Base 
    belongs_to :parent 
end 
+0

덕분에 더 적합하다. belongs_to에 관해서 ... 필자는 외래 키를 포함하는 테이블에 모델의 belongs_to가 포함되어 있다고 말하는 레일 사이트의 일부 문서를 읽었습니다. – user1084769

+1

사실입니다 만, belongs_to가 도입 한 의미 체계가 필요합니까? 즉 사용자는 하나의 상태를 가지고 있지만 상태는 사용자에게 속한 것입니까? 어떤 상태도 사용자에게 속한 것이 아니라 많은 사용자에게 상태를 할당 할 수 있으므로이 상태에 속한 사용자를 보여주는 쿼리 의미가 필요하지 않을 것입니다. – RadBrad

+0

실제로 그것을 설명하는 좋은 방법이었습니다. 감사합니다! – user1084769

관련 문제