我在这里遇到了一些问题,我无法使我的find_by_sql请求呈现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上使用“count”,我就会遇到一个很大的问题:我最终没有ActiveRecord关系,而是一个FixNum!
我不知道在哪里找到答案,如果你能帮助我,我将非常感激。 感谢
答案 0 :(得分:1)
find_by_sql
调用ActiveRecord对象时, YourModel.find_by_sql
才会返回该对象。
为什么不使用ActiveRecord查询界面。它在计算方面做得很好。
<强>已更新
@searches = @searches.group(:followable_id).limit(3).offset(0).count(:follower_id) if params[:only_famous_projects]
请注意,它会为您提供一个包含每个followable_id
计数的哈希值。
LIMIT 0, 3
不等同于LIMIT 3
吗?
答案 1 :(得分:0)