在我的应用程序的索引操作中,我希望仅列出当前登录用户创建的调查,因此而不是
@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但它没有用。
你能帮我解决一下吗?
答案 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