2014-07-15 4 views
-1

이 모델 사이의 연결을 만들려면 :레일 - 간단하게하기 위해 난 그냥 같이 그들을 유지 나는 분명히 더 속성이이 모델을 가지고 있지만 (그러나 "이메일"에하지 "ID"기준)

class User < ActiveRecord::Base 
    has_many :subs, :foreign_key => :email, :class_name => "subs" 
end 
class Subscription < ActiveRecord::Base 
    belongs_to :plan 
    belongs_to :user 
end 

subscriptions 테이블에는 이라는 열이 있습니다. 이 열은 사용자를 가리키며은 단일 사용자의 전자 메일 주소와 일치합니다 (두 테이블 모두 고유 한 열 email).

email 값을 기반으로 두 모델 간의 연결을 만들어야합니다. 나는이 쿼리를 실행하려고 할 때 (그리고 모든 가입을 얻기 위해 현재 사용자 로그인) :

<%= current_user.subs.inspect %> 

을 나는이 오류 메시지가 얻을 :

uninitialized constant User::subs 

내가 너희들을 부탁하고 싶습니다를 이 협회와 함께 나를 도왔습니다.

감사

답변

0

초기화되지 않은 상수 사용자 : 잠수정

당신은을 사용하는 경우

class User < ActiveRecord::Base 
    has_many :subs, :foreign_key => :email, :class_name => "subs" 
end 

class User < ActiveRecord::Base 
    has_many :subs, :foreign_key => :email, :class_name => "Subscription" 
end 

같이해야이 코드 class_name 옵션이 associations 인 경우 해당 파일은 model classname (Subscription이 아닌 subs이 아님)을 가리켜 야합니다. 클래스 이름이 subs 인 모델이 없으므로 예외가 발생합니다.

+0

나는 (당신이 제안한) 이것 역시 시도했지만 출력은'# '->하지만'subscriptions' 테이블에는이 사용자의 이메일. – user984621

+0

방금 ​​생성 된 SQL 쿼리를 확인했습니다 : SELECT 구독. * FROM subscriptions WHERE subscriptions.email = 1' - 명백히 틀린데, '1' 대신 전자 메일 주소가 있어야합니다. 외래 키가'email' 인 경우 쿼리에서 이메일 주소 대신 ID를 어떻게 사용할 수 있습니까? – user984621

+0

@ user984621 내 게시물은 사용자가 얻는 기본 오류 즉, 초기화되지 않은 상수 인 User :: subs 만 응답합니다. 어떤 라인에서이 에러를 보았습니까? '? – Pavan

0
class User < ActiveRecord::Base 
    has_many :subs, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email 
end 

class Subscription < ActiveRecord::Base 
    belongs_to :plan 
    belongs_to :user, :foreign_key => :email, :class_name => "Subscription", :primary_key => :email 
end 

올바른 클래스 이름을 설정하고 기본 키를 설정해야합니다.