例如,如果我有id和user_id列,在名为“microposts”的模型/数据集/表(技术术语?)中,比较我可以使用的两个集合
Micropost.where("user_id = ?", id)
但是,我想知道如何使用来自不同数据集/表/模型的数据做同样的事情。在这个特定场景中,我试图找到用户的社区变量等于任何微博的社区变量的所有实例。我正在尝试匹配字符串的内容,以便呈现具有与当前用户的社区变量匹配的社区变量的所有微博。这些变量在字符串形式中为@city + @state,位于用户和微博的模型/数据集/表中的“社区”列下。所示:
users table microposts table
user_id community micropost_id content community
1 FairfieldIowa 1 blub! FairfieldIowa
2 FairfieldIowa 2 Hiiy FairfieldIowa
3 Salt Lake CityUtah 3 wwowt! Salt Lake CityUtah
4 Salt Lake CityUtah 4 hey Salt Lake CityUtah
5 FairfieldIowa 5 sweet FairfieldIowa
我认为这可能适用于用户模型:
def communityfeed
Micropost.where("community = ?", user.community)
end
但是,由于语法,逻辑,或者因为“user”没有定义所有用户,所以它是不正确的。
然后我在pages_controller中将communityfeed_items定义为:
def home
if logged_in?
@micropost = current_user.microposts.build
@communityfeed_items = communityfeed.paginate(page: params[:page])
end
end
但我收到undefined local variable or method communityfeed
错误
这可能是因为我没有提供任何用户使用该方法。也许只是为所有用户使用变量将解决我的问题,但这是我找不到的。我已经尝试过all_users和用户,但没有成功。是否可以比较变量以这种方式呈现结果,如果是这样,循环所有用户/微博并检查这些匹配的语法是什么?
我还构建了几个部分功能来共同渲染微博,但是,如果没有@communityfeed_items变量正常运行,它们几乎没用。
_communityfeed.html.erb
<% if @communityfeed_items.any? %>
<ol class="microposts">
<%= render partial: 'shared/communityfeed_item', collection: @communityfeed_items %>
</ol>
<%= will_paginate @communityfeed_items %>
<% end %>
_communityfeed_items.html.erb
<li id="<%= communityfeed_item.id %>">
<%= link_to gravatar_for(communityfeed_item.user), communityfeed_item.user %>
<span class="user">
<%= link_to communityfeed_item.user.name, communityfeed_item.user %>
</span>
<span class="content"><%= communityfeed_item.content %></span>
<span class="timestamp">
Posted <%= time_ago_in_words(communityfeed_item.created_at) %> ago.
</span>
<% if current_user?(communityfeed_item.user) %>
<%= link_to "delete", communityfeed_item, method: :delete,
confirm: "You sure?",
title: communityfeed_item.content %>
<% end %>
</li>
如果我以极其低效/不可能的方式解决这个问题,我愿意接受建议。
感谢您的时间,慷慨和专业知识。