Schienen-Modell "before_filter"?
Ich weiß, dass before_filter ist nur für Controller in Rails, aber ich möchte so etwas wie dies für ein Modell: jedes mal, wenn eine Methode in meinem Modell heißt, würde ich gerne eine Methode, die bestimmt, ob die aufgerufene Methode ausgeführt werden soll. Konzeptionell, so etwas wie dieses:
class Website < ActiveRecord::Base
before_filter :confirm_company
def confirm_company
if self.parent.thing == false?
return false
end
end
def method1
#do stuff
end
end
So, wenn ich rufe @website.methode1, es wird der erste Anruf confirm_company, und wenn ich das return false nicht ausgeführt wird method1. Tut Rails verfügen über Funktionen wie diese? Ich hoffe, ich bin gerade etwas zu verpassen hier offensichtlich...
- Du meinst Active Record Callbacks?
- Ja, ein Rückruf ist, was ich brauche, denke ich. Aber keines der verfügbaren callbacks kann tun, was ich bin nach. Ich bin mir nicht speichern, validieren, letzteres... ich bin eine Methode aufrufen.
- Sie könnte verwenden ein proxy-Objekt und delegieren, um das Modell, wenn Ihre Bedingung erfüllt ist
- apneadiving - können Sie uns noch weitere Details? Nicht sicher, was du meinst...
- siehe simonecarletti.com/blog/2010/05/...
- Danke für den link: faszinierende Technik! Es wäre zwar ein mehr-Container-Lösung, wäre es immer noch von mir verlangen, Sie zu berühren jeden Modell-Methode zur Weiterleitung auf den proxy-Objekt. Ich bin auf der Suche nach etwas ein wenig mehr hands-off, wenn es vorhanden ist.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin wirklich nicht sicher, ob dies funktionieren wird, aber Sie können es versuchen, da ich wirklich keine Zeit jetzt. Werfen Sie einen Blick auf, dass: http://api.rubyonrails.org/classes/ActiveModel/Callbacks.html
Ich habe ein Juwel nur für diese.
Können Sie stecken Sie diesen in jedem ruby-Klasse, und etwas tun, wie in der Steuerung.
https://github.com/EdmundLeex/action_callback