Cet article est une suite de Présentation des présentateurs.
C'est le présentateur de modèle que j'ai créé la dernière fois. Je voudrais ajouter une méthode déléguée à ce présentateur
model_presenter.rb
class ModelPresenter
attr_reader :object, :view_context
def initialize(object, view_context)
@object = object
@view_context = view_context
end
end
Le délégué de méthode de classe définit une méthode d'instance avec le nom spécifié dans l'argument. Et le travail de cette méthode est confié à l'objet retourné par la méthode spécifiée dans l'option to.
Cette fois, nous déléguons une méthode appelée raw à l'objet retourné par view_context
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
Au fait, le member_presenter créé la dernière fois était comme ça.
member_presenter.rb
class MemberPresenter < ModelPresenter
def arrested_mark
object.arrested? ?
view_context.raw("☑") :
view_context.raw("☐")
end
end
L'utilisation de la méthode déléguée l'a rendu plus propre.
member_presenter.rb
class MemberPresenter < ModelPresenter
def arrested_mark
object.arrested? ? raw("☑") : raw("☐")
end
end
De plus, en cas d'arrestation?
member_presenter.rb
class MemberPresenter < ModelPresenter
delegate :arrested?, to: :object
def arrested_mark
arrested? ? raw("☑") : raw("☐")
end
end
Puisque la méthode arrest? Est un objet unique de l'objet membre, Je l'ai défini à la destination de l'héritage. En utilisant un délégué comme celui-ci, j'ai pu actualiser le présentateur.
C'est tout pour aujourd'hui !!
Recommended Posts