Załóżmy mam nazwanego zakresu:Sprawdź, czy instancja modelu objęta named_scope w szynach
class Foo < ActiveRecord::Base
named_scope :bar, :conditions => 'some_field = 1'
end
Działa to wielkie dla zapytań i mam kilka przydatnych named_scopes zdefiniowane. Chciałbym móc to zrobić:
f = Foo.find(:first)
f.some_field = 1
f.is_bar? #=> true
".bar?" metoda po prostu zwróci true lub false, jeśli instancja modelu mieści się w nazwanym zakresie. Czy mimo to można to zrobić bez pisania "is_bar?" metoda, mimo że już napisałem dobry sposób, aby sprawdzić, czy coś "jest_bar?" Jeśli dobrze pamiętam, DRY jest dobra, więc każda pomoc byłaby bardzo cenna/
dzięki. Ok, udaj, że zadzwoniłem. Zachowaj po zmianie wartości. Foo.bar.exists? (Foo.find (: first)) zwróci wartość true lub false w zależności od tego, czy mieści się ona w zasięgu kreski? Niesamowite. – user94154
Prawidłowo. Nie powinieneś też zadzwonić ponownie do Find. "f.save; Foo.bar.exists? (f)" powinno działać. – ryanb
Czy stało się to łatwiejsze od 2009 roku? –