2012-07-15 1 views
0

"follow/unfollow"기능과 관련된 응용 프로그램을 만들고 있습니다. UsersObjects을 따르고 Objects은 그 뒤에 많은 Users을 가질 수 있습니다. Relationships 모델/컨트롤러를 통해 has_many :through 관계입니다.다른 사람의보기에서 모델 메서드가 작동하지 않습니다.

<% if current_user.following?(@object) %> 
    <%= render 'unfollow' %> 
<% else %> 
    <%= render 'follow' %> 
<% end %> 

요구 사양에 다양한 기능을 테스트, 그것은 undefined method 'following?' for nil:NilClass을 보여주고 object#show 사양을 모두 실패

은 내가 object#show보기에서 다음 코드를 가지고있다.

following? 방법은 User 모델이며, 다음과 같습니다

def following?(object) 
    relationships.find_by_object_id(object.id) 
end 

방법 following?User 모델에 (그들은 다음과 언 팔로우하고있는 유일한 사람이기 때문에). 나는 당신이 Ruby에서 객체간에 메소드를 사용할 수 있다고 생각했지만 아마 그렇지 않을 것입니다. 그렇지 않다면, 어떻게 리팩토링하여 그 방법을 사용할 수 있습니까?

미리 도움을 청하십시오!

+0

개인 메서드가 아닌 사용자 모델에서도 공용 메서드입니다. – Justin

답변

0

도우미는 current_user입니다. 그래서 nil이됩니다. 테스트 사용자를 current_user 변수로 찔러야합니다.

+0

필자는 스펙 자체에서'current_user'를 전혀 참조하지 않고 단지 객체의 실제 뷰를 참조하고 있습니다. FactoryGirl을 사용하여 스펙에서 사용자를 작성한 후이를 (로그인 한 후) current_user로 사용합니다. – Justin

+0

어떤 사용자가 실제로 로그인했는지 확인하십시오. – ck3g

+0

감사합니다. 로그인 한 사용자 만 리미터에 포함되지 않은 한 가지 방법을 다시 확인했습니다! 도와 주셔서 감사합니다! – Justin

관련 문제