【发布时间】:2012-06-17 00:59:03
【问题描述】:
首先,我的模型定义:
class Batch < ActiveRecord::Base
has_many :data_files
has_many :file_types, :through => :data_files, :group => "data_files.file_type_id"
end
class DataFile < ActiveRecord::Base
belongs_to :batch
belongs_to :file_type
end
class FileType < ActiveRecord::Base
has_many :data_files
end
所以基本上我想要的是具有一个或多个数据文件的批次,每个数据文件都是特定类型的,我希望能够在一个批次中获得所有独特的文件类型。基于上述实现,我预计以下工作:
batch.file_types
但是,group 部分似乎不起作用。换句话说,文件类型列表不是唯一的,我必须在任何地方都这样做:
batch.file_types.uniq
我做错了什么?
编辑: 生成的SQL如下:
SELECT `file_types`.* FROM `file_types`
INNER JOIN `data_files` ON `file_types`.id = `data_files`.file_type_id
WHERE ((`data_files`.batch_id = 234))
【问题讨论】:
-
你试过
:group => :file_type_id吗?请发布生成的 SQL。 -
在问题中添加了 SQL。谢谢
标签: ruby-on-rails ruby-on-rails-3 activerecord associations