任何人都可以找到一種方法來使用軌道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