任何人都可以找到一种方法来使用轨道3中的metawhere或metasearch搜索计算字段?我可以搜索任何字段,但计算字段。必须有一种方法。对于不熟悉metasearch或metawhere的人来说,这里是一个railscast。Rails使用元搜索和元数据搜索计算字段
http://railscasts.com/episodes/251-metawhere-metasearch
任何人都可以找到一种方法来使用轨道3中的metawhere或metasearch搜索计算字段?我可以搜索任何字段,但计算字段。必须有一种方法。对于不熟悉metasearch或metawhere的人来说,这里是一个railscast。Rails使用元搜索和元数据搜索计算字段
http://railscasts.com/episodes/251-metawhere-metasearch
Metawhere(现Squeel)扩展的ActiveRecord的实现阿雷尔的是一种SQL生成。这意味着它会变成一些语句在SQL如:
@user.order("birthday").to_sql #=> SELECT users.* FROM users ORDER BY birthday
当你做User.find(:all).sort_by(&:age)
你在一个工作发现的结果(:所有),数组和排序的红宝石可枚举做这速度较慢,并且与数据库无关。
所以,不,你不能
def age
date.today - birthday
end
,除非你把结果存储在数据库中使用Metawhere。
但是您可以使用COUNT AVG MAX等SQL语句与GROUP和HAVING直接对数据库进行计算。
User.select("users.*, COUNT(user_id) AS vote_num").joins(:votes).group("user_id")
你的意思是不是存储在数据库中,并定义模型,而不是字段? –
是的,请解释一下你的意思? –
通过计算字段,你是指在模型中定义的虚拟参数,是从数据库表列中计算出来的?我不认为你可以搜索那些使用这些宝石的人,因为搜索最终会分解到数据库级别。 – rubyprince