我对rails的属性感到困惑?方法。例如
class User < ActiveRecord::Base
attr_accessible :x
end
user = User.new
user.x = 0
user.x? #false
user.x? => true
为什么不0
?
当我深入了解rails源代码时,在active_support/core_ext/class/delegating_attributes.rb
中说:
define_method("#{name}?") { !!send("#{name}") } if options[:instance_reader] != false
和active_support/core_ext/class/attribute.rb
:
def self.#{name}?() !!#{name} end
不是0 => true
?