Rails 3 で metawhere または metasearch を使用して計算フィールドを検索する方法を見つけた人はいますか? 計算フィールド以外のフィールドを検索できます。方法がなければなりません。metasearch や metawhere に慣れていない人のために、ここに railscast があります。
1 に答える
1
Metawhere(現在はSqueel)は、SQLジェネレーターであるArelのActiveRecordの実装を拡張します。これは、SQLでいくつかのステートメントを有効にすることを意味します。
@user.order("birthday").to_sql #=> SELECT users.* FROM users ORDER BY birthday
あなたがそうするとき、あなたはUser.find(:all).sort_by(&:age)
find(:all)、配列の結果に取り組んでいます、そしてソートはより遅くてデータベースとは何の関係もないEnumerableを使ってRubyで行われます。
いいえ、Metawhereを使用することはできません
def age
date.today - birthday
end
結果をデータベースに保存しない限り。
ただし、COUNT AVG MAXなどのSQLステートメントをGROUPおよびHAVINGとともに使用して、データベースで直接計算を行うことができます。
User.select("users.*, COUNT(user_id) AS vote_num").joins(:votes).group("user_id")
于 2011-10-12T10:35:47.663 に答える