|
1 Range#to_s(:db)
代码
- >> (7.days.ago..1.day.ago).to_s(:db)
- => "BETWEEN '2006-12-11 02:06:50' AND '2006-12-17 02:06:50'"
2 Time Calculations
代码
- >> Time.days_in_month(2)
- => 28
- >> Time.now.seconds_since_midnight
- => 8709.840965
-
- # last_year, next_year, last_month, next_month
- >> Time.now.last_year
- => Sun Dec 18 02:25:59 -0800 2005
- >> Time.now.next_month
- => Thu Jan 18 02:26:41 -0800 2007
-
- # beginning_of_day, end_of_day, beginning_of_month, end_of_month
- # beginning_of_quarter, beginning_of_year
- >> Time.now.beginning_of_day
- => Mon Dec 18 00:00:00 -0800 2006
-
- # yesterday, tomorrow, next_week(day = :monday)
- >> Time.now.tomorrow
- => Tue Dec 19 02:28:01 -0800 2006
- >> Time.now.next_week(:friday)
- => Fri Dec 29 00:00:00 -0800 2006
-
- # valid symbol keys for #change:
- # year, month, mday, hour, min, sec, usec
- >> Time.now
- => Mon Dec 18 02:33:17 -0800 2006
- >> Time.now.change(:hour => 1)
- => Mon Dec 18 01:00:00 -0800 2006
-
- >> Time.now.in(5.days)
- => Sat Dec 23 02:34:59 -0800 2006
3 with_options DRY你的路由配置。
代码
- # map.article ':year/:month/:day/:permalink', :controller => 'mephisto', :action => 'show'
- # map.article ':year/:month/:day/', :controller => 'mephisto', :action => 'daily'
- # map.search 'search/:q', :controller => 'mephisto', :action => 'search', :q => nil
- 等同
- # map.tags '*tags', :controller => 'mephisto', :action => 'list'
- map.with_options :controller => 'mephisto' do |m|
- m.article ':year/:month/:day/:permalink', :action => 'show'
- m.article ':year/:month/:day/', :action => 'daily'
- m.search 'search/:q',:action => 'search', :q => nil
- m.tags '*tags', :action => 'list'
- end
4 blank?
代码
- >> 0.blank?
- => false
- >> " ".blank?
- => true
- >> [].blank?
- => true
- >> {}.blank?
- => true
- >> nil.blank?
- => true
5 returning
代码
- def create_book
- book = Book.new
- book.title = "Trafalgar: The Nelson Touch"
- book.author = "David Howarth"
- @db.add(book)
- book
- end
- 等同
- def create_book
- returning Book.new do |book|
- book.title = "Trafalgar: The Nelson Touch"
- book.author = "David Howarth"
- @db.add(book)
- end
- end
6 Time#to_s(:format)
代码
- >> Time.now.to_s(:time)
- => "01:50"
- >> Time.now.to_s(:short)
- => "Dec 18, 2006"
- >> Time.now.to_s(:db)
- => "2006-12-18 01:50:42"
- >> time.to_s(:stamp)
- => 5:23PM
- >> time.to_s(:relative)
- => today
7 cattr_reader, cattr_writer, and cattr_accessor cattr_*与class_inheritable_*有比较的地方。可以参考前面所讲
代码
- class MailTruck
- cattr_accessor :trucks, :customers
- end
- MailTruck.trucks = [:UPS_TRUCK_9189, :UPS_TRUCK_9192]
- >> class Parent; cattr_accessor :val; end
- => [:val]
- >> class Child1 < Parent; end
- => nil
- >> class Child2 < Parent; end
- => nil
- >> Child1.val = 4
- => 4
- >> Child2.val
- => 4
- >> Child2.val = 5
- => 5
- >> Child1.val
- => 5
-
- >> class Parent; class_inheritable_accessor :val; end
- => [:val]
- >> class Child1 < Parent; end
- => nil
- >> class Child2 < Parent; end
- => nil
- >> Child1.val = 4
- => 4
- >> Child2.val = 4
- => 4
- >> Child2.val = 5
- => 5
- >> Child1.val
- => 4
8 delegate 不大清楚它的内涵。只能通过实例去猜了。那位那是知道。请回复。
代码
- class Shipment < ActiveRecord::Base
- …
- def mailing_address
- user ? user.mailing_address : nil
- end
- …
- end
-
- 等同
-
- class Shipment < ActiveRecord::Base
- …
- delegate :mailing_address, :to => :user
- …
- end
9 Symbol#to_proc
代码
- >> %w[apple dell hp].map { |company| company.first }
- => ["a", "d", "h"]
- >> %w[apple dell hp].map(&:first)
- => ["a", "d", "h"]
10 Proc#bind
代码
- >> %w[joe tim francis].map &with_index { |x| [x, index] }
- => [["joe", 0], ["tim", 1], ["francis", 2]]
-
- >> %w[badger goat mule eagle shark].select &with_index { even }
- => ["badger", "mule", "shark"]
|