0

在我的应用程序的索引操作中,我希望只列出当前登录用户创建的调查,所以不要这样做

@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,我会收到一个错误,它没有“每个”方法。

我对日志中的@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 但它没有用。

你能帮我解释一下吗?

4

1 回答 1

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
于 2013-02-18T21:42:55.020 回答