5

Rails 3 で metawhere または metasearch を使用して計算フィールドを検索する方法を見つけた人はいますか? 計算フィールド以外のフィールドを検索できます。方法がなければなりません。metasearch や metawhere に慣れていない人のために、ここに railscast があります。

http://railscasts.com/episodes/251-metawhere-metasearch

4

1 に答える 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 に答える