首页 > 解决方案 > 符号声明中的presents是什么意思?

问题描述

我正在研究一些 Ruby on Rails 代码,发现了几个用 Presents 声明的符号如下所示...

class MembersPresenter < Gitlab::View::Presenter::Delegated
  include Enumerable

  presents :members

  def to_ary
    to_a
  end

  def each
    members.each do |member|
      yield member.present(current_user: current_user)
    end
  end
end

这是什么意思?

标签: ruby-on-railsruby

解决方案


我不确定我是否理解你的问题。如果不是,请详细说明您不清楚的地方。

在第 4 行

presents :members

有对presents类方法的方法调用,符号:members是该方法的参数。

在第 12 行

yield member.present(current_user: current_user)

present每个 都有调用的方法member。该方法的参数中的哈希current_user: current_user

这意味着什么?

嗯,类方法显然需要一个符号(很可能它也会理解一个字符串)并使用它来构建或配置演示者。并且present实例方法需要了解当前用户,并且该方法期望当前用户以选项散列或kwarg的形式提供。

这真正意味着什么完全取决于代码库以及方法对这些参数的作用。


推荐阅读