Rails的精髓之:ActiveSupport ( studying acitve-support)

访问量: 1411

用了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

太多了。。。先看到这里。

订阅/RSS Feed

Subscribe

分类/category