ruby-on-rails – 如何在Rails中设置默认值?

我试图找到最好的方式来设置Rails中对象的默认值。

我能想到的最好是在控制器中的新方法中设置默认值。

任何人都有任何输入,如果这是可以接受的,或者有更好的方法吗?

“正确”是Ruby中的一个危险词。通常有不止一种方法来做任何事情。如果您知道您将始终需要该表中该列的默认值,请在数据库迁移文件中设置它们是最简单的方法:

class SetDefault < ActiveRecord::Migration
  def self.up
    change_column :people, :last_name, :default => "Doe"
  end

  def self.down
    # You can't currently remove default values in Rails
    raise ActiveRecord::IrreversibleMigration, "Can't remove the default"
  end
end

因为ActiveRecord自动发现您的表和列属性,这将导致在任何模型中使用任何标准Rails应用程序中设置相同的默认值。

但是,如果您只想在特定情况下设置默认值,例如,它是一个继承的模型,与其他人共享一个表 – 然后另一个优雅的方式是在创建模型对象时直接在Rails代码中:

class GenericPerson < Person
  def initialize(attributes=nil)
    attr_with_defaults = {:last_name => "Doe"}.merge(attributes)
    super(attr_with_defaults)
  end
end

然后,当你做一个GenericPerson.new(),它总是涓滴“Doe”属性直到Person.new(),除非你用别的东西重写它。

http://stackoverflow.com/questions/1186400/how-to-set-default-values-in-rails

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:ruby-on-rails – 如何在Rails中设置默认值?