我有三个模特。User,Message和Filter,如下所示。如何选择User.find(*).filters.messages
用户:
has_many :filtershas_and_belongs_to_many :messages消息:
has_and_belongs_to_many :usershas_and_belongs_to_many :filters滤波器:
belongs_to :userhas_and_belongs_to_many :messages编辑1:
我将结果分配给一个名为@filtered_messages的实例变量,并希望在我的视图中迭代它。
以下是我的行动:
...
def show
  @filtered_messages = ...
end
...以下是我的观点部分(摘要):
<% @filtered_messages.each do |message| %>
...
  <%= message.author%> #author is a column in messages_tables
...
<% end %>发布于 2015-03-10 02:39:59
听起来,您想要获取一个用户的所有过滤器的所有消息。是那么回事吗?试试这个:
User.find(*).filters.includes(:messages).map { |filter| filter.messages }.flatten
发布于 2015-03-10 03:28:07
你应该能够做到这一点:
class User
  has_many :filters
  has_and_belongs_to_many :messages
  has_many :filter_messages, through: :filters, class_name: 'Message'
end然后@user.filter_messages应该返回您想要的东西。
发布于 2015-03-10 02:36:33
试试这个:
User.find(1).filters.first.messageshttps://stackoverflow.com/questions/28955178
复制相似问题