Когда атрибуты метода определены в модели? - PullRequest
0 голосов
/ 25 сентября 2018

Я пишу докладчик.Я хочу делегировать атрибут метода Model.Я написал следующий код.

app / Presenters / model_presenter.rb

class ModelPresenter
  include HTMLBuilder

  attr_reader :object, :view_context
  delegated_methods  = ActionView::Base.instance_methods(true)
  delegated_methods -= Object.instance_methods(true)
  delegate *delegated_methods, to: :view_context

  def initialize(object, view_context)
    @object       = object
    @view_context = view_context
  end

app / Presenters / staff_member_presenter.rb

class StaffMemberPresenter < ModelPresenter
  delegated_methods  = StaffMember.instance_methods(true)
  delegated_methods -= ActiveRecord::Base.instance_methods(true)
  delegate *delegated_methods, to: :object

Я думаю, что ActiveRecord.instance_methods включает методы атрибутов, такие как электронная почта, имя, фамилия, имя, приостановка и т. Д.но это не включаетПосле запуска StaffMember.new.email это включает в себя приостановлено и приостановлено?и так далее.Я думаю, что эта причина в том, что ActiveRecord динамически определяет методы атрибута (такие как электронная почта, имя_первой).поэтому я решил эту проблему с помощью следующего кода.

app / Presenter / staff_member_presenter.rb

class StaffMemberPresenter < ModelPresenter
  StaffMember.new.created_at
  delegated_methods  = StaffMember.instance_methods(true)
  delegated_methods -= ActiveRecord::Base.instance_methods(true
  delegate *delegated_methods, to: :object

Я думаю, что есть более простой способ, чем приведенный выше.Если вы знаете простой способ, вы можете сказать мне это?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...