我正在为表中的可排序列构建机制。每个表都代表一个数据列表,所以我将数据库表称为“列表”。除了列位置的排序之外的所有东西都有效。我想显示由“position”字段排序的列位置,但即使我删除了:order语句也没有任何变化。
我可以毫无问题地访问list.column.columnposition.position,因此关系本身似乎有效。
为什么列位置没有按“位置ASC”排序?
//编辑:我使用@lists = List.find:all
获取列表答案 0 :(得分:1)
:order => "position ASC"
选项在您的关系定义级别没有帮助,因为您希望按列位置排序lists
,而不是位置本身。
从模型中删除:order => "position ASC"
,然后尝试:
@lists = List.find(:all, :joins => { :columns => :column_positions }, \
:order => 'column_positions.position ASC')
代替。在development
模式下运行时查看生成的SQL。
干杯, 诉
答案 1 :(得分:0)
我假设您尝试订购的表达式是
list.column
你希望这个结果按位置排序吗?好吧,在这种情况下,查询不是“查看”列位置关联,因此它不遵守任何其:order子句。
我不确定为什么你需要将列位置作为自己的关联,特别是因为你将它作为:has_one,所以只有一个匹配的行。
我只是将列位置数据作为列模型中的列,然后您可以按照单个查询中的方式对其进行排序。