irb和rails控制台显示[] .blank的不同结果?

时间:2014-10-07 11:31:46

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

为什么irb和rails控制台显示[] .blank?

的不同结果

这是我的irb检查:

$ irb
2.1.0 :001 > a = []
 => [] 
2.1.0 :002 > a.blank?
NoMethodError: undefined method `blank?' for []:Array
    from (irb):2
    from /home/user/.rvm/rubies/ruby-2.1.0/bin/irb:11:in `<main>'

这是我的控制台检查:

$ rails c -e local
Loading local environment (Rails 4.1.5)
2.1.0 :001 > a = []
 => [] 
2.1.0 :002 > a.blank?
 => true 

2 个答案:

答案 0 :(得分:6)

rails {添加blank?方法(不属于标准的ruby语言) 来自rails docs:http://api.rubyonrails.org/

# File activesupport/lib/active_support/core_ext/object/blank.rb, line 15
def blank?
  respond_to?(:empty?) ? !!empty? : !self
end

答案 1 :(得分:2)

需要ActiveSupport扩展

Object#blank?方法是Rails'ActiveSupport Core Extensions的一部分。 Rails默认包含ActiveSupport。但是,这些扩展也可以独立于Rails as a gem安装。

您可以通过要求ActiveSupport的所需部分,在其他应用程序或交互式REPL会话中包含部分ActiveSupport。例如,混合支持#blank?方法:

require 'active_support'
require 'active_support/core_ext/object/blank'

[].blank?
# => true