我想实例化一个指定某些属性的模型对象。例如
post = Post.new
应该将post.vote_total设置为0.我尝试在initialize方法中执行此操作,但它似乎无效:
def initialize()
vote_total=0
end
提前谢谢。
答案 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