简介:Rails 3.2;'a' 是一个对象和 ActiveRecord 模型,它有_many 消息(也是 ActiveRecord 模型)——尽管这对我的问题可能不是很重要。
那么问题来了:为什么会这样,
irb(main):046:0> a.messages.respond_to?(:where) => true
但还有这个,
irb(main):047:0> a.messages.methods.include?(:where) => false
?
发生了什么?显然,这里有一些 Ruby 魔法,这使得这些探索对象的方式产生了不同的结果;我猜一个是查询 Array 类,另一个是查询...响应 :where的东西(以及其他方法)。也不知道该叫什么。我的猜测是它正在用一些东西查询 Array 类的对象......“混合”?(我想我在 Ruby 上下文中经常听到这个词......)