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.

InformationsquelleAutor Aaron Vegh | 2012-05-01
Schreibe einen Kommentar