我正在使用mysql&rails 3.0.9
我有两个模型:类型和便利性
每个模型都通过has_and_belongs_to_many与其他模型相关联
并使用称为以下设施的联接表创建:
create_table :amenities_types, :id => false do |t|
t.column :type_id, :integer
t.column :amenity_id, :integer
end
现在,例如,我有以下记录:
types:
id label
1 a
2 b
3 c
amenities:
id label
1 d
2 e
amenities_types
type_id amenity_id
1 1
1 2
3 2
我想列出内部联接表:
type.id type.label. amenity.id amenity.label
1 a 1 d
1 a 2 e
3 c 2 e
我尝试了Type.find(:all,:joins =>:amenities),但是只显示了type列
如果我执行Amenity.find(:all,:joins =>:types),则仅显示commenities列。
最佳答案
修改您的便利设施模型,如下所示:
class Amenity < ActiveRecord::Base
has_one :type, :through => :amenities_types
end
然后像这样访问:
Amenity.all.includes(:type)
显示:
Amenity.all.includes(:type).each { |a|
puts a.label
puts a.type.label
# etc.
}