gpt4 book ai didi

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

转载 作者:数据小太阳 更新时间:2023-10-29 06:17:58 26 4
gpt4 key购买 nike

我正在尝试找到为 Rails 中的对象设置默认值的最佳方法。

我能想到的最好的方法是在 Controller 中的 new 方法中设置默认值。

如果这是可以接受的或者是否有更好的方法,是否有人有任何意见?

最佳答案

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

class SetDefault < ActiveRecord::Migration
def self.up
change_column :people, :last_name, :type, :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()与其他东西。

关于ruby-on-rails - 如何在 Rails 中设置默认值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1186400/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com