我在这里遇到了一些问题,我无法发出find_by_sql请求来呈现ActiveRecord关系。确实,我需要一个activerecord关系来提出新请求:
@searches = @searches.find_by_sql('SELECT *, COUNT( follower_id ) FROM follows GROUP BY followable_id LIMIT 0 , 3') if params[:only_famous_projects] @project_pages = @project_pages.where(:project_id => @searches.pluck(:'followable.id')) if params[:only_famous_projects]
没有activerecord关系,我不能使用“ pluck”。因此,我想我必须将sql请求转换为Activerecord请求。但是,一旦我在ActiveRecord上使用“计数”,我就会遇到一个巨大的问题:最后,我没有ActiveRecord关系,而是FixNum!
我不知道在哪里找到答案了,如果您能帮助我,我将不胜感激。谢谢
find_by_sql仅当您使用调用ActiveRecord对象时,它才会返回ActiveRecord对象YourModel.find_by_sql。
find_by_sql
YourModel.find_by_sql
为什么不使用ActiveRecord查询界面。它在计算方面做得很好。
更新
@searches = @searches.group(:followable_id).limit(3).offset(0).count(:follower_id) if params[:only_famous_projects]
请注意,它将为您提供一个哈希值,其中包含每个哈希值的计数followable_id。
followable_id
不LIMIT 0, 3等于LIMIT 3吗?
LIMIT 0, 3
LIMIT 3