如何使用属性实例化模型对象?

时间:2012-01-13 14:08:01

标签: ruby-on-rails ruby object model initialization

我想实例化一个指定某些属性的模型对象。例如

post = Post.new 

应该将post.vote_total设置为0.我尝试在initialize方法中执行此操作,但它似乎无效:

def initialize()
    vote_total=0
end

提前谢谢。

3 个答案:

答案 0 :(得分:9)

将属性哈希传递给对象,如:

post = Post.new(:vote_total => 123, :author => "Jason Bourne", ...)

如果您是Ruby on Rails的新手,您可能需要阅读 Getting Started Guide ,其中详细介绍了这个以及更多有用的Rails习语。

答案 1 :(得分:2)

我会使用回调: Available Callbacks

class Post
   before_save :set_defaults

   def set_defaults
      self.vote_total ||= 0
      #do other stuff
   end
end

答案 2 :(得分:0)

您可以允许数据库为您存储默认值

class AddColumnWithDefaultValue < ActiveRecord::Migration
  def change
    add_column :posts, :vote_total, :integer, :default => 0
  end
end

或者对于现有表:

class ChangeColumnWithDefaultValue < ActiveRecord::Migration
  def up
    change_column_default(:posts, :vote_total, 0)
  end
  def down
    change_column_default(:posts, :vote_total, nil)
  end
end

关于storing default values in the database,有很多争论。