是否可以使用子元素属性对查询进行分组?按子属性对Activerecord查询进行分组
Post.find(:all, :include => [ :authors, :comments ], :group=>'authors.city')
不起作用。
但是,我可以使用author.city
作为条件的一部分。
是否可以使用子元素属性对查询进行分组?按子属性对Activerecord查询进行分组
Post.find(:all, :include => [ :authors, :comments ], :group=>'authors.city')
不起作用。
但是,我可以使用author.city
作为条件的一部分。
如果这就是你使用的是什么,那么语法是错误的:组参数,它应该是:
Post.find(:all, :include => [ :author, :comments ], :group=>'authors.city')
确保您:作者和:评论协会是正确的。如果'authors'是实际的表名,那么在Post模型和Author模型中需要一个'has_one:author'关联。
协会必须是正确的,太:
class Post < AR:Base
belongs_to :author
has_many :comments
end
class Author < AR:Base
has_many :posts
end
class Comment < AR:Base
belongs_to :post
end
和DB模式:
posts
id
author_id
authors
id
comments
id
post_id
这将让正确运行查询,但是,现在我得到一个错误结果...:在使用include的情况下:group子句似乎不适用。
查看日志文件中生成的查询 - 通常可以将查询粘贴到您最喜欢的MySQL工具中以获取更详细的错误。
实际上,您可能需要提供一个聚合函数来使数据库正确分组(这发生在MySQL中,而不是语法错误)。
作者是否应该被复数化?
Post.find(:all, :include => [ :authors, :comments ], :group=>'authors.city')
解决的办法是强制必要的加盟,使ActiveRecord并解决“authors.city”:
Post.find(:all, :include => [ :author, :comments ], :joins=>"INNER JOIN authors ON posts.author_id=authors.id", :group=>'authors.city')
对不起,我翻译我从实际问题的问题。你当然是对的。 – sutee 2008-09-24 05:26:23