Supposons que j'ai une portée nommée:Vérifiez si l'instance de modèle se situe dans named_scope dans des rails
class Foo < ActiveRecord::Base
named_scope :bar, :conditions => 'some_field = 1'
end
Cela fonctionne très bien pour les requêtes et j'ai un tas de named_scopes utiles définies. Qu'est-ce que je voudrais est de pouvoir faire ceci:
f = Foo.find(:first)
f.some_field = 1
f.is_bar? #=> true
Le '.bar?' La méthode retournera simplement true ou false si l'instance de modèle tombe dans la portée nommée. Est-il possible de le faire sans écrire un 'is_bar?' méthode même si j'ai déjà écrit un bon moyen de vérifier si quelque chose «is_bar? Si je me souviens bien, DRY est bon donc toute aide serait grandement appréciée/
merci. Ok, fais comme si j'appelais .save après avoir changé la valeur. Foo.bar.exists? (Foo.find (: first)) retournera vrai ou faux selon qu'il se situe dans la portée de la barre? Impressionnant. – user94154
Correct. Vous ne devriez pas avoir à appeler à nouveau Find non plus. "f.save; Foo.bar.exists? (f)" devrait fonctionner. – ryanb
Est-ce que cela a été plus facile depuis 2009? –