2012-07-15 66 views
0

我正在研究涉及“关注/取消关注”功能的应用程序。 Users可以遵循ObjectsObjects可以有许多Users。这是一个has_many :through关系通过Relationships模型/控制器。模型方法不能在另一个视图中工作

我在object#show视图下面的代码片断:

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

当在请求测试规范的各种功能,它显示undefined method 'following?' for nil:NilClass和失败的所有object#show规格的。

following?方法是在User模型,看起来像这样:

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

方法following?是在User模型(因为他们是唯一做以下和取消关注)。我以为你可以在Ruby中的对象之间使用方法,但也许不会。如果不是,我将如何去重构这个以便能够使用该方法?

在此先感谢您的帮助!

+0

这也是在用户模型中的公共方法,而不是私有方法。 – Justin 2012-07-15 18:36:21

回答

0

规范中没有current_user帮手。这就是为什么你得到nil。 你应该刺测试用户current_user变量

+0

我没有在规范本身中引用'current_user',只是在对象的实际视图中。我使用FactoryGirl在规格中创建用户,并将其用作current_user(登录后)。 – Justin 2012-07-15 18:42:33

+0

尝试确保用户真正登录 – ck3g 2012-07-15 18:55:12

+0

谢谢,我重新检查并发现一种方法,没有包括在限制器中只有登录用户!谢谢您的帮助! – Justin 2012-07-15 19:00:38

相关问题