2

というフィールドを持つモデルがありますdeleted。これは、削除されたアイテムをマークするために使用されます。

したがって、通常、deleted = falseアイテムを持っているものにクエリを実行し、特別なケースでは、削除されたアイテムをリストして復元する必要があります。

それは可能ですか?私が今できることは、名前付きスコープを使用することです:conditions => {:deleted => false}

Item.other_named_scopeすると、削除されていないアイテムをすべて見つけることができるようにするためのより良い方法はありますか?

4

1 に答える 1

4

これには default_scope を使用できます。

class Post
  default_scope :conditions => {:deleted => false}
end

Postこれで、モデルへのすべてのクエリがACTIVE投稿になります。この動作をオーバーライドする場合は、次を使用しますwith_exclusive_scope

Post.with_exclusive_scope{ find_all_by_deleted(true) } #returns deleted records

参照:

リンク 1

警告

default_scope はすべてのファインダー呼び出しに影響します。注意して、望ましくない副作用を十分に認識して使用する必要があります.

于 2010-08-31T04:39:32.743 に答える