我有三个相关模型:供应商、项目、库存项目。我很难理解如何利用关联来返回关联的属性。
class Item < ActiveRecord::Base
has_many :inventory_items
has_many :vendors, through: :inventory_items
accepts_nested_attributes_for :inventory_items, :vendors
class InventoryItem < ActiveRecord::Base
belongs_to :item
belongs_to :vendor
class Vendor < ActiveRecord::Base
has_many :inventory_items
has_many :items, through: :inventory_items
我正在尝试退回出售商品的供应商以及他们出售商品的价格。这是我的 SearchResults 索引视图:
<table>
<tr class="search-table">
<td>Product</td>
<td>Details</td>
<td>Brand</td>
<td>Code</td>
<td>Vendors</td>
<td>Price</td>
</tr>
<% @items.each do |item| %>
<tr class="search-table">
<td><%= item.product %></td>
<td><%= item.details %></td>
<td><%= item.brand %></td>
<td><%= item.code %></td>
<td><%= #how to return vendors? %></td>
<td><%= #how to return price? %></td>
</tr>
<% end %>
</table>
这是我的 SearchResultsController:
类 SearchResultsController < ApplicationController
def index
@search = Item.solr_search do
fulltext params[:search]
end
@items = @search.results
end
end
我是 RoR 的新手,所以欢迎任何意见。提前致谢!
编辑
这是给定 Item.first.vendors 时从 rails 控制台返回的内容
项目加载(0.7 毫秒)选择“项目”。*从“项目”限制 1 供应商加载(0.9 毫秒)选择“供应商”。*从“供应商”内部连接“库存项目”在“供应商”。“id”=“库存项目” "."vendor_id" WHERE "inventory_items"."item_id" = 1 => []
解决方案编辑 我的模型关联中有一些基本错误,不允许我利用这些关系。我通过删除重复字段(在本例中为:item_id 和:product_code)清理了这些关联,并且下面的答案非常有效。