2008-10-09 7 views
12

Ich habe named_scope, das in mehreren ActiveRecord-Modellen wiederverwendet wird. Zum Beispiel:So extrahieren Sie allgemeine named_scopes aus ActiveRecord-Modellen

named_scope :limit, lambda {|limit| {:limit => limit}}  

Was ist die beste Praxis ist es, diesen Code zu extrahieren, über Modelle gemeinsam genutzt werden. Ist es möglich, es zu einem Modul zu extrahieren oder sollte ich eher ActiveRecord :: Base-Klasse öffnen?

Antwort

21

Verwenden Sie ein Modul. So etwas sollte funktionieren:

Dann schließen Sie einfach CommonScopes und Sie werden gut zu gehen.

+1

Dies scheint für die Klasse-Ebene zu arbeiten, aber nicht die Instanzebene. Zum Beispiel: 'User.limit (1)' funktioniert, aber der zweite Aufruf, um hier zu begrenzen, löst einen Fehler aus: 'users = User.limit (5); users.limit (1) '. Irgendeine Lösung für die Instanzenebene? –

Verwandte Themen