如何处理没有doc的Rails / Mongoid

时间:2014-02-12 23:03:30

标签: ruby-on-rails mongoid nomethoderror

在为用户Posts.find(creator: current_user:_id)调用所有帖子时,用户没有做任何... rails为其发出“NoMethodError”...

我想要做的是为“为什么,不。你没有发布任何东西,你懒惰的用户”的用户有一个漂亮的输出。而不是这个可怕的错误。

处理这样的事情最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您需要使用where代替find。根据设计,find方法实际上找到您正在寻找的现有内容。请参阅有关查询here的文档。

此外,您可以尝试使用try方法。基本上它等于以下内容:

object.try(:something_scary)
# is equal to
object && object.something_scary

这是我处理nil实体的方式。如果您想向用户显示某种消息(关于懒散),请在模板内部进行检查并渲染不同的部分。例如:

   <% if @posts.present? %>
     <%= render 'posts' %>
   <% else %>
     <%= render 'no_posts' %>
   <% end %>

然后,您可以将消息放入no_posts部分内容。