2012-05-25 1 views
1

모델에서 현재 객체를 가져올 수 있는지 궁금합니다. 즉 내가모델에서 현재 객체를 얻으려면 self를 사용하십시오.

belongs_to :user 
belongs_to :lesson 

내 수업 모델은 필자 시도하고 나뿐만 아니라 (중요하지 않음) 내 사용자 모델과 연관을 가지고

has_many :favorite_relationships 
has_many :users, :through => :favorite_relationships 

있는

FavoriteRelationship 모델이 내 FavoriteRelationship 내에서 방법을 수행

def lesson_owner 
    self.lesson.user 
end 

은 FavoriteRelationship에서 해당 강의에 속한 사용자를 검색하지만 작동하지 않는 것 같습니다. 내가 작동하지 않는 FavoriteRelationship 모델의 경우에도 교훈을 검색

self.lesson.inspect 

을 할 경우에도, 아무 것도 반환하지 않습니다. 누군가 이렇게 할 수있는 방법을 밝힐 수 있었습니까?

나는 본질적으로 FavoriteRelationship 모델과 관련된 수업을 원합니다. 내 FavoriteRelationship 테이블에, 나는,

:id, :user_id, :lesson_id. 

을 속성을 가지고 있고 : lesson_id은 값 메신저 그래서 난 이후

당신의 도움과 시간

을 주셔서 감사합니다 사용자를 얻을 수 있습니다 획득을 시도해야한다

@ 업데이트.

기본적으로 사용자 즐겨 찾기 누군가 elses 수업을 '배지'부여하려고 사용하고 있습니다. 내가 그 방법을 만든 이유가 ..

def create 
    @lesson = Lesson.find(params[:favorite_relationship][:lesson_id]) 
    puts 'before favorite' 
    current_user.favorite!(@lesson) 
    puts 'after favorite' 
    @favorite_relationship = @lesson.user  
    respond_to do |format| 
     format.html { redirect_to @lesson } 
     format.js 
    end 
end 

내 배지 부여는에 부여 메신저 사람 반환하는 방법에 걸리는

grant_on 'favorite_relationships#create', :badge => 'got-favorited', 
     :to => :lesson_owner 

...에서 온다, 그건.

내가 제공까지, 전무 또는 아무것도

puts self.lesson.inspect 

아무것도 할 때. 나는 내 호의적 인 일을 알고, 그것은 DB에 관계를 만듭니다. 내가 생각할 수있는 유일한 일은 관계가 생기기 전에 배지를 부여하려고한다는 것입니다. hmm ... print 문을 넣었고 create_favorite_relationship이 호출되고 반환 된 후에 lesson_owner에 들어가는 것처럼 보입니다. 어쩌면 DB에서 아직 만들지 않았을까요? 너무 빨라요? 선호도는 비동기 적으로 발생합니다.

좀 더 연관성을 설정해야합니까?

+0

간단한 접근 방식 인 @user = FavoriteRelationship.find (1) .user'는 무엇이 잘못 되었습니까? – jdoe

+0

그냥 항상 테이블의 첫 번째 행을 반환하지 않습니다? – Sasha

+0

그저 그 예입니다. 그것을 일반화하자 :'@ fav_rel.user' 또는'FavoriteRelationship'의 메소드에서 접근하려고한다면'user'를 호출하십시오. 또는 나는 당신의 의도를 오해 했습니까? – jdoe

답변

2

그럼이 self.lesson.inspect은 무엇을 반환합니까? nil 또는 NoMethodError? 마이그레이션을 표시하고 실제로 데이터베이스에있는 항목을 확인하십시오. 이것은 귀하의 관계가 수업에 대한 링크가 누락 된 것일 수 있습니다 (lesson_id은 (가) NULL 임) ...

+0

또한'self.lesson.inspect'를 확인하기 위해 콘솔에서 무엇을합니까? 아무것도 반환하지 않는다고 말하는 것이 이상합니다. 당신이 제대로 인쇄하지 않는 것 같습니다. –

+0

nil 또는 NoMethodError를 반환하지 않습니다. 내 질문을 업데이트하겠습니다 ... – Sasha

+0

모든 마이그레이션을 보여 주시겠습니까? – Sasha