Rails的精髓之:ActiveSupport ( studying acitve-support)
访问量: 3316
用了Rails 4年多了。不过还没认真看过ActiveSupport. 只是发现很多优雅的方法都是出自于其中:
- blank?
- in?
- revert_merge
- try
所以,今天看了一下。发现最重要的一点是:如何引用 ActiveSupport:
require 'active_support' # doesn't work
require 'active_support/all' # ok!
下面是一些翻译: (参考:http://guides.rubyonrails.org/active_support_core_extensions.html)
1. blank? v.s. present?
blank? : nil, false, '', 空数组,空Hash, 以及 所有empty? == true 的,都是 返回true
present? == !blank?
2. presence: 返回它的 present? ? receiver : nil
host = config[:host].presence || 'localhost'
3. duplicable? 能否复制?
"".duplicable? # => true false.duplicable? # => false
4. try: 试着调用某个方法。出现exception 就返回nil
5. singleton_class: 貌似跟eigen_class 有关。。。 目前我用的不多。只记得前者的获取比较麻烦。又要 def << self 啥的。。。
6. class_eval 这个不陌生了。。。用的很多地方
7. acts_like?(:some_thing): 如果某个class 中定义了: def acts_like_banana? ; ... ; end, 这时, acts_like? :banana => true
8. to_param: 对于active_model, 默认返回id.
9. to_query: {:c => 3, :b => 2, :a => 1}.to_query # => "a=1&b=2&c=3"
10. with_options ... 用来简化代码的。。。
11. instance variables:
instance_variable_names 返回的都是字符 instance_values
12. silence_warnings, silence_stream, quietly ...
13 in? 1.in? [1,2,3] # => true
太多了。。。先看到这里。