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")
あなたは、データベースに格納され、代わりにモデルで定義されていないフィールドを意味していますか? –
はい、計算の意味を説明してください。 –
計算フィールドでは、データベーステーブルの列から計算されたモデルで定義された仮想パラメータを意味しますか?検索は最終的にデータベースレベルに壊れてしまいますので、私はこれらの宝石を使ってそれらを検索することはできません。 – rubyprince