我有项目,地区和类别表,他们通过item_region和item_category表加入他们的关系如下
class Item < ActiveRecord::Base
has_many :item_region
has_many :region, :through => :item_region
has_many :item_category
has_many :category, :through => :item_category
class Region < ActiveRecord::Base
has_many :category
has_many :item, ::through => :item_category
class ItemRegion < ActiveRecord::Base
belongs_to :item
belongs_to :region
end
class Category < ActiveRecord::Base
has_many :item, :through => :item_category
has_many :item_category
class ItemCategory < ActiveRecord::Base
belongs_to :item
belongs_to :category
end
我想使用连接表从region_id,category_id和item_id中找到item和category_name以及region_name的所有字段。
感谢。
答案 0 :(得分:0)
我希望我把这个弄错了。如何获得所需的项目,然后从中获取所需的区域和类别。
item = Item.find(item_id)
region = item.regions.where(:id => region_id)
category = item.categories.where(:id => category_id)
另一个建议是,你最好为你的协会提供复数形式。它直观地为object.collections
关联执行has_many
。请注意,Rails仍将使用上面的代码,但不遵循Rails的CoC(约定优于配置)原则。如果遵循惯例,则不必进行大量配置。
查看此处的示例http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_many
就个人而言,我更喜欢将Item模型中的关联作为:
class Item < ActiveRecord::Base
has_many :item_regions
has_many :regions, :through => :item_regions
has_many :item_categories
has_many :categories, :through => :item_categories