[英]can model “belong_to” two other models and have a nested relationship?
[英]model include, must belong to 2 other models
这确实让我烦恼-似乎无法通过包含等建立正确的关联。 这是有问题的模型:
class Category < ActiveRecord::Base
has_many :subcategories
has_many :locations, :through => :subcategories
end
class Location < ActiveRecord::Base
has_many :subcategories
has_many :category, :through => :subcategories
end
class Subcategory < ActiveRecord::Base
belongs_to :category
belongs_to :location
end
我需要以以下结构输出:
Category.name
Location.name
Subcategory.name
Subcategory.name
Subcategory.name
(subcategory from another sub category)
控制器:
class SubcategoriesController < ApplicationController
def index
@categories = Category.all(:include => [:locations => :subcategories], :group
=>"subcategories.name")
end
视图:
<div class="categorylist">
<ul>
<%= @categories.each do |category|%>
<h3>
<%=h link_to category.name, category %>
</h3>
<%= category.locations.each do |location|%>
<h6>
<%= link_to location.name, location %>
</h6>
<%= location.subcategories.each do |subcategory|%>
<p>
<%= link_to subcategory.name, subcategory%>
</p>
<% end %>
<% end %>
<% end %>
</ul>
</div>
我想要的是:
Fruit
France
apple
granny smith
fig
India
pineapple
banana
Meat
India
cow
chicken
-------------
What I am currently getting:
Fruit
India
cow
chicken
banana
pineapple
这意味着我仅根据位置而不是位置和类别来获取子类别。
当我到达子类别级别时,出现了我的问题,其中子类别应同时取决于类别和位置-它们似乎只属于其他模型中的一种,但是在我的情况下,它们必须属于两者。 我似乎无法正确理解。 我尝试了很多方法来做到这一点,甚至不确定即时消息是否正确。
希望有人能指出正确的方向。
在此先感谢克里斯蒂安
如果我正确理解您的问题,您会遇到类似
#Category
Fruit
Apple
Banana
Vegetable
Lettuce
#Location
France
Apple
Lettuce
India
Banana
现在,您想要类似
#Hierachical output
Fruit
France
Apple
Vegetable
Lettuce
India
Fruit
Banana
在那种情况下,这样行不通=> location.subcategories.where(category_id: category.id).each
吗?
编辑 :
也许,这可能有效(除了上述更改之外):
<%= category.locations.all(include: sub_categories).each do |location|%>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.