如果使用.any,DataMapper使用.last获取最后一条记录会引发没有方法错误?在视野中

时间:2013-03-25 18:01:25

标签: ruby conditional datamapper instance-variables

在我的应用程序中为长期标题道歉,我试图从数据库中找到与我传递给它的参数匹配的最后一条记录。

@goals = Weight.last(:is_goal=>true,:user_id=>@user.id)

在我的视图中,我想运行一个条件来检查是否有任何存在,如果有,它将显示一个div。

<% if @goals.any? %>
    <% @goals.each do |goal| %>
        <p><%= goal.amount %></p>
    <% end %>
<% end %>

但由于某种原因,这会抛出无方法错误NoMethodError at / undefined method 'any?'。如果我将.last更改为.all,则可以使用

@goals = Weight.all(:is_goal=>true,:user_id=>@user.id)

这背后是否有任何原因或者我发现了一个错误?

1 个答案:

答案 0 :(得分:1)

好吧,.last方法返回一个对象,.all方法返回一个对象数组 .any?是一种数组方法。你不能在一个对象上调用.any?,除非你创建了一个方法,否则它会告诉你没有方法。