Rails:通过两个不同的模型循环

时间:2017-11-10 10:53:11

标签: ruby-on-rails ruby ruby-on-rails-4

我已经实现了基本搜索,我正在通过这样的结果循环:

视图/项目/ search.html.erb

 <% if @items.present? %>
       <% if @items %>
         <% @items.each do |item| %>
             <%= link_to item.title, item %>
               <%= number_to_currency item.price %>
           <% end %>
         <% end %>
    <% end %> 

我还有一个account.rb belongs_to :user,其中包含有关地址,电话号码等的所有详细信息。

模型关联:

class Account < ApplicationRecord
  belongs_to :user
end

class Item < ApplicationRecord
  belongs_to :user
  belongs_to :account
end

class User < ApplicationRecord
  has_one :account, autosave: true
  has_many :items
end

另外,我在t.integer "user_id"accounts表下也有items

我想在结果中显示特定项目的account信息。如何通过两个不同的模型循环并显示所需的结果?

1 个答案:

答案 0 :(得分:2)

您可以使用joins传递帐户和用户之间的关联,以及与用户和项目的关联,例如:

Account.joins(user: :items).where(items: { id: item_id })

这将为您提供一个SQL查询,要求Account表中的每一列都将accounts.id与accounts.user_id和items.user_id一起加入users.id,要求每个Item记录的id等于item_id

SELECT "accounts".*
FROM "accounts"
INNER JOIN "users"
ON "users"."id" = "accounts"."user_id"
INNER JOIN "items"
ON "items"."user_id" = "users"."id"
WHERE "items"."id" = ?  [["id", item_id]]