In Model-View-Controller (MVC):
- A Modell Ihre Daten enthält, und jede Funktionalität eng an Ihre Daten (Low-Level-Logik)
- A Controller bezogen hält Ihre Geschäftslogik (High-Level-Anwendungslogik)
- A Ansicht hält Ihre Präsentationsebene (Benutzeroberfläche)
Ansichten haben Zugriff auf alle öffentlichen Modellmethoden. (Hinweis: Alle Ruby-Methoden sind standardmäßig öffentlich.) Natürlich muss das Modellobjekt zuerst in der entsprechenden Controller-Methode instanziiert werden und Instanzvariablen (d. H. @person
) und keine lokalen Variablen (d. H.) im Controller sein.
Controller haben auch Zugriff auf alle öffentlichen Modellmethoden.
Geschützte Methoden beschränken den Zugriff innerhalb der Klasse oder innerhalb eines ihrer untergeordneten Elemente. Private Methoden beschränken den Zugriff nur innerhalb der Klasse.
Es scheint mir, dass Klassenmethoden, d. H. def Person.some_method ...
, überall sichtbar sind, ob sie als öffentlich, geschützt oder privat definiert sind, obwohl dies kontraintuitiv ist.
In Bezug auf Ihre Frage über sich selbst ... Sie können für alle Anrufe aus dem Inneren dieses Modells auf die eigenen Methoden des Modells selbst verwenden, und Sie werden nicht schief gehen.
z.B. für Person-Modell mit first_name und last_name Spalten:
class Person < ActiveRecord::Base
def full_name
"#{self.first_name} #{self.last_name}"
end
def parse_name full
self.first_name, self.last_name = full.split
end
end
Aber das ist Overkill. Sie brauchen eigentlich nicht selbst zu verwenden, um Attribute in Active, nur für die Einstellung Attribute abrufen, so dass die folgende ist in Ordnung:
class Person < ActiveRecord::Base
def full_name
"#{first_name} #{last_name}"
end
def parse_name full
self.first_name, self.last_name = full.split
end
end
„alle Arten von Problemen“ - einige von ihnen aufzählen, und vielleicht können wir ihnen begegnen . Der allgemeine Kern deines Posts ist so weit, dass du nicht antworten kannst, aber im weitesten Sinne: es gibt keine Einschränkungen ;-) – Pavling