我正在阅读使用mongodb 的rails 3教程
我看到了类似的东西
# Note this: ids are of class ObjectId.
key :user_id, ObjectId
timestamps!
感叹号是什么意思???谢谢
class Story
include MongoMapper::Document
key :title, String
key :url, String
key :slug, String
key :voters, Array
key :votes, Integer, :default => 0
key :relevance, Integer, :default => 0
# Cached values.
key :comment_count, Integer, :default => 0
key :username, String
# Note this: ids are of class ObjectId.
key :user_id, ObjectId
timestamps!
# Relationships.
belongs_to :user
# Validations.
validates_presence_of :title, :url, :user_id
end
这是在MongoMapper::Document:中定义的
https://github.com/jnunemaker/mongomapper/blob/master/lib/mongo_mapper/plugins/timestamps.rb
def timestamps!
key :created_at, Time
key :updated_at, Time
class_eval { before_save :update_timestamps }
end
在Ruby中,允许方法以问号(method_name?)或感叹号(method_name!)结尾。
它们的语义取决于程序员。有一种惯例是使用感叹号来表示该方法将修改它所调用的对象,但许多人将它们用于其他目的。
我想,在你的情况下,它的意思是"做吧!",一眼就能看出这种方法会有一些"有趣"的副作用。
哇!这完全解释了为什么我对Rails是一个完全荒谬的框架的怀疑都得到了证实!让我们让开发人员来决定某个东西的含义。真正地
http://phpvsrails.blogspot.com/
这说明了一切。