我有三个相关模型:Vendor,Item,InventoryItem。我很难理解如何利用关联来返回相关属性。
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:
class SearchResultsController&lt; ApplicationController中
def index
@search = Item.solr_search do
fulltext params[:search]
end
@items = @search.results
end
end
我在RoR很新,所以欢迎任何意见。提前谢谢!
修改
以下是给定Item.first.vendors
时从rails控制台返回的内容项目加载(0.7ms)SELECT“items”。* FROM“items”LIMIT 1 供应商负载(0.9ms)SELECT“vendor”。* FROM“vendors”INNER JOIN“inventory_items”ON“vendors”。“id”=“inventory_items”。“vendor_id”WHERE“inventory_items”。“item_id”= 1 =&GT; []
解决方案编辑 我的模型关联中存在一些基本错误,这些错误不允许我利用这些关系。我通过删除重复字段来清理这些关联(在这种情况下:item_id和:product_code),下面的答案工作得很好。
答案 0 :(得分:2)
为了列出特定商品的供应商,只需替换:
<td><%= #how to return vendors? %></td>
使用:
<% item.vendors.each do |vendor| %>
<%= vendor.name %><br/>
<% end %>