我正在使用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.
  }

10-07 20:32