2011-08-17 21 views
5

誰かがmetilsarchまたはmetasearchを使って計算フィールドを検索する方法をレール3で見つけることができましたか?私はフィールドを検索することができますが、フィールドを計算します。方法があるはずです。 metasearchやmetahhereに精通していない人にとっては、鉄道があります。Rails metasearchとmetawhereを使用して計算フィールドを検索する

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

+0

あなたは、データベースに格納され、代わりにモデルで定義されていないフィールドを意味していますか? –

+0

はい、計算の意味を説明してください。 –

+0

計算フィールドでは、データベーステーブルの列から計算されたモデルで定義された仮想パラメータを意味しますか?検索は最終的にデータベースレベルに壊れてしまいますので、私はこれらの宝石を使ってそれらを検索することはできません。 – rubyprince

答えて

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)あなたが検索の結果に取り組んでいないとき:配列、(すべての)、およびソートがある可算とRubyで行われています遅く、データベースとは関係がありません。あなたがデータベースに結果を格納しない限り、

ありませんので、あなたは

def age 
    date.today - birthday 
end 

にMetawhereを使用することはできません。

しかしあなたはGROUPでCOUNT AVG MAXなどのようなSQL文を使用してデータベースに直接計算を行うためにHAVINGことができます。

User.select("users.*, COUNT(user_id) AS vote_num").joins(:votes).group("user_id")

関連する問題