我已经实现了基本搜索,我正在通过这样的结果循环:
视图/项目/ 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
信息。如何通过两个不同的模型循环并显示所需的结果?
答案 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]]