在ruby on rails中,感叹号后面的变量mean是什么



我正在阅读使用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/

这说明了一切。

相关内容

  • 没有找到相关文章

最新更新