actslike?(duck) 定义了一个actslike?(duck)方法,它是一个duck-type安全方法,判断是否是一个鸭子类型。
blank? 判断是否有empty?方法,有则调用,否则判断自身是否为nil, NilClass, FalseClass, TrueClass, Array, Hash, String, Numeric对其进行了重写。
present? blank?取反
presence 如果它调用 present?为true,返回它自身,否则返回nil
duplicable? 判断对象是否可以安全的复制,如果它不能复制,调用dup方法将抛出TypeError异常,抛出异常的代价是40倍以上的性能代价,所以我们倾向于硬编码,大多数对象可以复制。Object是duplicable?返回true,但NilClass, FalseClass, TrueClass, Symbol, Numeric, Class, Module进行了重写,它们都返回false,BigDecimal如果能复制,不抛出异常,则定义duplicable?,并返回true,否则调用父类实现。
in?(*args) 如果当前对象包含在参数中,则返回true, 当前对象必须实现了#include?方法,否则将抛出ArgumentError异常。
instance_values 返回实例属性 => 实例值的键值对hash
instancevariablenames 如果Ruby版本为1.9即以上版本, 返回所有实例变量名称,包含"@",它返回字符串,否则调用:instance_variables,在1.9之前它也是字符串
tojson require 'json',如果失败,将使用默认实现。它重写Object, Array, FalseClass, Float, Hash, Integer, NilClass, String, TrueClass 类的tojson方法,调用ActiveSupport::JSON进行处理。
toparam 对于 NilClass, TrueClass, FalseClass 返回它们自身,对于Object返回tos,对于Array,调用to_param并以"/"相连接,对于Hash, 他可以接受一个namespace参数,默认为nil, 默认情况下,它将hash键-值连接,以&分割,就像Url查询字符串,如果指定了namespace, 将以方括号括起参数。
toquery(key) 转换一个Object对象为一个可供url查询的键值对,它对键和值都调用CGI.escape进行转码,它以key位键,以当前对象为值,都会调用toparam方法。如果是一个Array对象,它将以key[]为键,以数组每一个项位置,返回一个Url查询字符串。Hash对象,调用to_param
try(*a, &b) 如果当前对象为nil, 他将返回nil, 否则请求当前对象对应的方法。
with_options 合并一些重复的hash选项,例如:
class Account < ActiveRecord::Base has_many :customers, :dependent => :destroy has_many :products, :dependent => :destroy has_many :invoices, :dependent => :destroy has_many :expenses, :dependent => :destroy end
可以这样使用:
class Account < ActiveRecord::Base with_options :dependent => :destroy do |assoc| assoc.has_many :customers assoc.has_many :products assoc.has_many :invoices assoc.has_many :expenses end end
它也可以使用一个明确的接收器:
I18n.with_options :locale => user.locale, :scope => "newsletter" do |i18n| subject i18n.t :subject body i18n.t :body, :user_name => user.name end