2010-11-30 6 views
0

다른 네임 스페이스에 두 개의 모델이 있습니다.Rails에서 관련 모델의 데이터를 가져올 수 없습니다.

class Admin::Membership < ActiveRecord::Base 
    has_many :authorization_roles 
end 


class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership 
end 

회원 영입 모델은 Admin::Membership.find(:all) 실행 AuthorizationRole 모델의 데이터가 포함되어 있지 않습니다 AuthorizationRole 모델을 다른 폴더 (나는 소위 모르는)

입니다. authorization_roles 테이블에서 membership_id 필드를 만들었지 만 여전히 두 모델을 모두 가져올 수 없습니다. 이 코드에서 잘못된 점이 있습니까? 미안하지만 내가 뭔가를 여기에서 놓치고있다.

답변

0

나는 모델을 네임 스페이스 나는 당신이 필요가 있다고 생각하지 않습니다 사용한 적이 없으니까 ...하지만 어쩌면 당신은 AuthorizationRole에서 클래스 이름을 지정해야합니다, 뭔가 같은 :

belongs_to :membership, :class_name => 'Admin::Membership' 

UPDATE :

당신을 가정

가 있습니다

class Membership < ActiveRecord::Base 
    has_many :authorization_roles 
end 

class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership 
end 

당신은 authorization_roles에 membership_id라는 정수 열을 추가하고 마이그레이션을 실행했습니다. 지금 당신은이 @membership.authorization_roles.create(...) 같은 authorization_roles를 생성하고이 @membership.authorization_roles

+0

변경하지 않아도됩니다. 이미 시도해 보았습니다. 또는 관계를 만들 필드를 지정해야합니까? –

+0

파일을 동일한 폴더로 이동하려고 시도했지만 네임 스페이스를 사용하지 않았지만 변경 사항이 없습니다. –

+0

내 대답 – jordinl

1

당신이 테이블 이름 접두사를 설정하는 경우 볼이

class Admin::Membership < ActiveRecord::Base 
    has_many :authorization_roles, :class_name => '::AuthorizationRole' 
end 


class AuthorizationRole < ActiveRecord::Base 
    belongs_to :membership, :class_name => 'Admin::Membership' 
end 
0

확인을 시도 가져올 수 있어야합니다. 레일즈 모델 생성기는 네임 스페이스 모델이 같은 파일을 추가합니다

# /app/models/admin.rb 
module Admin 
    def self.table_name_prefix 
    'admin_' 
    end 
end 

참고 :이 레일 버전 3.0.1입니다 - 이전 버전에 대해 확실하지.

관련 문제