|
180
|
| Joshua Partogi · 技术社区 · 16 年前 |
|
|
1
275
可以为迁移中的列设置默认选项
或
你可以使用回拨,
|
|
|
2
187
因为我刚刚遇到这个问题,而且Rails3.0的选项有点不同,所以我将为这个问题提供另一个答案。 在Rails 3.0中,您希望执行如下操作:
|
|
|
3
79
当我需要默认值时,在呈现新操作的视图之前,它通常用于新记录。以下方法将仅为新记录设置默认值,以便在呈现表单时可用。
|
|
|
4
77
您可以在不编写任何代码的情况下完成此操作:)您只需要为数据库中的列设置默认值。你可以在迁移中这样做。例如:
希望有帮助。 |
|
|
5
23
解决办法取决于一些事情。 默认值是否依赖于创建时可用的其他信息? 您能用最小的结果擦除数据库吗? 如果你回答了第一个问题“是”,那么你就要使用吉姆的解决方案。 如果你回答了第二个问题“是”,那么你就要使用丹尼尔的解决方案。 如果您对这两个问题都回答“否”,那么最好添加并运行一个新的迁移。
:字符串可以替换为ActiveRecord::Migration可以识别的任何类型。 CPU很便宜,因此在Jim的解决方案中重新定义任务不会导致很多问题。尤其是在生产环境中。这种迁移是在加载它时进行迁移的正确方法,而且调用频率要少得多。 |
|
|
6
12
我会考虑使用发现的属性默认值 here . 你最狂野的梦想会实现。 |
|
|
7
9
只是加强 Jim's answer 使用 presence 一个人能做的
|
|
|
8
4
对于列类型,Rails支持开箱即用的方式——就像这个问题中的字符串一样——最好的方法是在数据库本身中设置列默认值,正如DanielKristensen所指出的那样。Rails将对数据库进行内省,并相应地初始化对象。另外,这使得你的数据库可以安全地防止有人在你的Rails应用程序之外添加一行,而忘记初始化该列。 对于列类型,Rails不支持开箱即用(例如枚举列),Rails将无法反省列默认值。对于这些情况 不 希望在初始化之后(每次从数据库加载对象以及每次使用.new创建对象时调用)、创建之前(因为它在验证后发生)或保存之前(因为它也在更新时发生,这通常不是您想要的)使用。 相反,您希望在“创建”上的“验证前”中设置属性,如下所示:
|
|
|
9
4
如我所见,在需要默认值时有两个问题需要解决。
这是我的解决方案:
我很想知道人们为什么会想到这种方法。 |
|
|
10
0
我现在找到了一个更好的方法:
在Ruby中,方法调用不允许有括号,因此我应该将局部变量命名为其他变量,否则Ruby会将其识别为方法调用。 |
|
|
11
0
在这里的示例中,您正在将“p”分配给局部变量“status”。尝试
|