1

我有这堂课:

class User
  include Mongoid::Document
  field :revenues, :type => Integer, :default => nil
  attr_accessible :revenues
  #now method
  def revenues
   return 1
  end
end

为什么在控制台中我得到1nil

1.9.3-p125 :002 > u.revenues
 => 1 

哪个优先,方法还是领域?如何创建具有与字段相同功能的方法?

4

1 回答 1

0

field宏在 Mongoid::Document 中定义。它既不是 Ruby 的语法特性,也不是 Rails 的语法特性。

您的代码发生的情况如下:

  1. field函数为您创建了一些方法,其中之一称为revenues.
  2. 当您创建另一个名为 的方法时revenues,您实际上是在覆盖先前定义的方法,因此使其无用。

简短回答:我不了解有关 Mongoid 的 zip,但是即使您再次定义了一个名为revenues. 唯一的缺点是您无法再通过调用来访问它myUser.revenues

尝试进行测试:使用符号访问您的字段,some_user[:revenues]看看会发生什么:)

最好的祝福

于 2012-11-21T15:29:23.833 回答