2012-01-17 11 views
2

仮想アトリビュートをRailsのファインダの条件として使用する方法はありますか?例えばRuby on Rails |条件内の仮想属性

Friend.find(:first, conditions: { full_name: 'Chandler Bing' }) 

Friend.where(login: '[email protected]', password: 'secret') 

# `full_name' and `password' are virtual attributes 

感謝。

答えて

1

仮想属性とは何ですか?データベースフィールドによってサポートされていない属性?

それではできません。

1

仮想属性は一般にデータベースに保持されません。レコードの保存中またはデータベースからレコードをフェッチした後に計算されます。あなたはそれをすることはできません!

3

私は最近のプロジェクトでこれを使用しています。特定の日付範囲にあるレコードを選択するために使用します。私はファインダーではなくスコープを使用します。

scope :since, lambda {|from, to| {:conditions => {:created_at => (from .. to)}}} 

これは、その後Modelフィールドのcreated_atは、与えられた範囲と照合されModel.since from, toのように呼ばれています。

これを仮想属性に使用するには、スコープ内に仮想フィールドを作成する必要があります。 first_nameフィールドとlast_nameフィールドで一致してfull_nameに一致するようにする

関連する問題