Dieser Artikel ist eine Fortsetzung von Introducing Presenters.
Dies ist der Model Presenter, den ich das letzte Mal gemacht habe. Ich möchte diesem Präsentator eine Delegatenmethode hinzufügen
model_presenter.rb
class ModelPresenter
attr_reader :object, :view_context
def initialize(object, view_context)
@object = object
@view_context = view_context
end
end
Der Klassenmethoden-Delegat definiert eine Instanzmethode mit dem im Argument angegebenen Namen. Die Arbeit dieser Methode wird dem Objekt anvertraut, das von der in der Option to angegebenen Methode zurückgegeben wird.
Dieses Mal delegieren wir eine Methode namens raw an das von view_context zurückgegebene Objekt
model_presenter.rb
class ModelPresenter
attr_reader :object, :view_context
delegate :raw, to: :view_context
def initialize(object, view_context)
@object = object
@view_context = view_context
end
end
Übrigens war der zuletzt erstellte member_presenter so.
member_presenter.rb
class MemberPresenter < ModelPresenter
def arrested_mark
object.arrested? ?
view_context.raw("☑") :
view_context.raw("☐")
end
end
Mit der Delegate-Methode wurde es sauberer.
member_presenter.rb
class MemberPresenter < ModelPresenter
def arrested_mark
object.arrested? ? raw("☑") : raw("☐")
end
end
Darüber hinaus, wenn verhaftet? Wird zum Objekt ausgelagert
member_presenter.rb
class MemberPresenter < ModelPresenter
delegate :arrested?, to: :object
def arrested_mark
arrested? ? raw("☑") : raw("☐")
end
end
Da die angehaltene? -Methode ein eindeutiges Objekt des Mitgliedsobjekts ist, Ich habe es am Vererbungsziel definiert. Ich konnte den Moderator mit einem solchen Delegaten aktualisieren.
Das ist alles für heute !!
Recommended Posts