创造记录时,我有一个类,看起来像这样:未定义的方法“删除”的字符串:类使用Mongoid并通过控制台
class SearchService
include Mongoid::Document
key :name, String
field :url, String
field :searchBaseUrl, String
validates_presence_of :name, :url, :searchBaseUrl
validates_uniqueness_of :name
end
这里的第一个问题是,我用validates_presence_of
不当或因此它似乎。我评论了这一行,我可以在控制台创建类实例,没有任何问题。但是,当我尝试创建具有validates_presence_of的对象时,出现错误:
NoMethodError: undefined method `delete' for String:Class
from D:/Ruby193/lib/ruby/gems/1.9.1/gems/mongoid-2.3.3/lib/mongoid/fields.rb:230:in `add_field'
from D:/Ruby193/lib/ruby/gems/1.9.1/gems/mongoid-2.3.3/lib/mongoid/fields.rb:145:in `field'
此错误消息是否有意义?我很难看到String类中缺少方法和我错误地使用validates_presence_of
之间的关系。如果我只能选择一件关于Ruby的东西,那就会导致错误信息。
rails docs表示validates_presence_of用于关联。但mongo db page表示它用于必填字段。 mongodb文档是不正确的?
我想确定这是否是一个问题,我应该向mongoid团队报告,或者如果我只是不理解语言是如何工作的。
更新:好吧,现在我在类中根本没有使用validates_presence_of的类似错误。所以这是一些其他问题(尽管最初注释掉该行)。
Update2:这对我来说似乎是在mongoid中的错误。更改此行:
field :name
到 field :name, String
将导致错误出现。似乎任何使用类型定义的字段都会使mongoid变得混乱。或者那些不应该在那里? mongodb文档(上面链接)的代码看起来像key :votes, Integer, :default => 0
,所以如果它是无效的文档是错误的。
的Rails 3.1.1,1.9.3红宝石
的Rails的哪个版本是你吗? –
@Alex更新问题 – jcollum