有没有人能够找到一种方法来搜索一个计算出的字段,在rails 3中使用元搜索或元搜索?除计算字段外,我可以搜索任何字段。一定有办法的。对于那些不熟悉元搜索或元数据的人来说,这里是一个铁路站点。
http://railscasts.com/episodes/251-metawhere-metasearch
发布于 2011-10-12 10:35:47
Metawhere (现在的Squeel)扩展了ActiveRecord的Arel实现,Arel是一个SQL生成器。这意味着它将在SQL中转出一些语句,例如:
@user.order("birthday").to_sql #=> SELECT users.* FROM users ORDER BY birthday当您执行User.find(:all).sort_by(&:age)时,您正在处理一个find(:all)、一个数组的结果,排序是在Ruby中完成的,这比较慢,并且与数据库无关。
所以不,你不能在
def age
date.today - birthday
end除非将结果存储在数据库中。
但是,,,您可以在GROUP中使用诸如COUNT等SQL语句,并且必须在数据库上直接进行计算。
User.select("users.*, COUNT(user_id) AS vote_num").joins(:votes).group("user_id")
https://stackoverflow.com/questions/7087565
复制相似问题