我在MySQL数据库中使用TEXT列。正如文档所述,无法为这些列设置默认值。
我目前正在使用以下代码来模拟此行为:
class Data
before_save lambda {text_column ||= ''}
end
有没有更好的,更多的railis / active_record方法来做到这一点?
答案 0 :(得分:3)
如果您对HTML5解决方案感到满意,您是否在:text_field上尝试过:占位符属性?
您是否真的想将text_field(捕获少量文本)填充到“文本”类型列中?你的意思是text_area吗?
如果您希望“默认值”实际存储在数据库中,如果用户没有输入任何内容,那么我建议如下。这是“工厂”模式。
您可以在模型中创建“设置”方法,而不是在ActiveRecord模型类上调用“new”
def self.setup(params = {})
new(params).tap do |v|
v.text_column = "default value"
# other defaultings
end
end
在您的控制器中,而不是在类上调用new,您调用setup。
答案 1 :(得分:-1)
在迁移中添加此内容
add_column :table_name, :column_name, :string, :default => 'your text'
为我工作
答案 2 :(得分:-3)
如果表单中有新文本字段,请使用此文本字段的默认值:
#views/controller/new.html.erb
<%= f.text_field :column_name, :value => "default value" %>
这是一个很好的可用性选择,因为用户知道该列的默认值。
不要在edit.html.erb
中使用它,因为在这种情况下,无论数据库中的原始值如何,此字段仍将具有默认值。