12

我在rails应用程序中有这样的方法:

def current_user
        return @current_user if @current_user.present?
        @current_user = current_user_session && current_user_session.record
end

我以前没有使用过这种.present?方法,所以我进入我的交互式 ruby​​ shell 来玩弄它。

每当我使用xxx.present?它时,它都会返回 NoMethodError。不管xxx是字符串、数字还是数组都没有关系。

我怎样才能使用这种方法?

4

3 回答 3

24

present是由 提供的一种方法ActiveSupport。它不是核心红宝石的一部分。这就是为什么您不能在 ruby​​ shell 中使用它的原因。要使用它,您需要在控制台中使用相关库(例如 irb / pry):

require 'active_support'
require 'active_support/core_ext'

这样,您将可以访问由activesupport.

于 2013-09-15T08:49:52.613 回答
9

present是一种 rails 方法,而不是 ruby​​。
尝试在控制台中使用rails c而不是使用它。irb

于 2013-09-15T08:48:24.060 回答
3

如上所述,.present不在 ruby​​ 标准库中。相反,它在 active_support ( docs .)

要使用 active_support,首先安装 gem,然后在 irb 或您的 ruby​​ 脚本中使用它。有关如何选择性地加载 activesupport 扩展的更多信息可以在Rails 指南中找到。

于 2013-09-15T09:35:49.897 回答