没有查询结果的每个方法

时间:2013-02-18 21:33:56

标签: ruby-on-rails

在我的应用程序的索引操作中,我希望仅列出当前登录用户创建的调查,因此而不是

@surveys = Survey.all

我做了

@mysurveys = Survey.find_by_twitteruser_id(session[:twitteruser_id])

然而,在显示调查时,使用@surveys = Survey.all,我可以做

<% for survey in @surveys %>
    <tr>
      <td><%= survey.name %></td>
      <td><%= survey.twitteruser_id %></td>
      <td><%= link_to "Show", survey %></td>
      <td><%= link_to "Edit", edit_survey_path(survey) %></td>
      <td><%= link_to "Destroy", survey, :confirm => 'Are you sure?', :method => :delete %></td>
    </tr>
  <% end %>

如果我尝试使用@mysurveys,我会收到一个错误,即它没有'each'方法。

我在日志中对@surveys和@mysurveys进行了检查,结果发现它们不一样。 @surveys是一个数组

[#<Survey id: 32, name: "Mike", twitteruser_id: 1, created_at: "2013-02-18 21:15:18", updated_at: "2013-02-18 21:15:18">]

和@mysurvey是我不知道什么,但它没有数组括号,因此我认为这是它没有“每个”方法的原因

#<Survey id: 32, name: "Mike", twitteruser_id: 1, created_at: "2013-02-18 21:15:18", updated_at: "2013-02-18 21:15:18">

我试图做@ mysurvey.to_a但它没有用。

你能帮我解决一下吗?

1 个答案:

答案 0 :(得分:1)

find_by方法通过向查询添加LIMIT 1返回单个结果,您想使用find_all_by方法

@mysurveys = Survey.find_all_by_twitteruser_id(session[:twitteruser_id])

或更好,因为这些方法将在Rails 4中弃用

@mysurveys = Survey.where(:twitteruser_id => session[:twitteruser_id])

或通过加载用户模型来使用您的关联。

@twitteruser = Twitteruser.find(session[:twitteruser_id])
@myserveys = @twitteruser.surveys