Ruby on rails Rails 3.2中空表列的最佳实践
我对Rails中的数据库数据有一个问题 空表列的最佳实践是什么 我没有默认的一些列,这些列对于用户输入来说不是必须的,例如Ruby on rails Rails 3.2中空表列的最佳实践,ruby-on-rails,database,ruby-on-rails-3,database-design,ruby-on-rails-3.2,Ruby On Rails,Database,Ruby On Rails 3,Database Design,Ruby On Rails 3.2,我对Rails中的数据库数据有一个问题 空表列的最佳实践是什么 我没有默认的一些列,这些列对于用户输入来说不是必须的,例如 User model ID | name | drink_of_choice | favourite_color ----------------------------------------------------- 1 | Benji | coffee | yellow 2 | Becky | tea
User model
ID | name | drink_of_choice | favourite_color
-----------------------------------------------------
1 | Benji | coffee | yellow
2 | Becky | tea | NULL
-----------------------------------------------------
正如你所看到的,贝基最喜欢的颜色是空的,因为贝基还没有输入她最喜欢的颜色
Rails开发人员是否将:default=>''设置为保存空字符串并在数据库中避免NULL的最佳实践
谢谢你的耐心,我也很感激你给我的建议
WD如果适合您,请尝试此宝石:
这也有助于u->尝试这款适合您的宝石:
这也有助于你有很多选择 1-第一个是强制用户输入一些数据。因此,您可以使用: 4-另一个选择是在迁移文件中定义它,但我并不喜欢它(一点也不灵活):
class CreateUser < ActiveRecord::Migration
def change
create_table :users do |t|
...
t.string :favourite_color, default: ''
...
t.timestamps
end
end
end
class CreateUser
最好的方法是什么
更准确地说,遵循Rails最佳实践:胖模型、瘦控制器。我会选择选项2
编辑-在决定列的默认值之前,请考虑它的含义。如果意思是没有输入数据,我认为您应该将其保留为空。感谢的评论,请看一看。您有很多选择 1-第一个是强制用户输入一些数据。因此,您可以使用: 4-另一个选择是在迁移文件中定义它,但我并不喜欢它(一点也不灵活):
class CreateUser < ActiveRecord::Migration
def change
create_table :users do |t|
...
t.string :favourite_color, default: ''
...
t.timestamps
end
end
end
class CreateUser
最好的方法是什么
更准确地说,遵循Rails最佳实践:胖模型、瘦控制器。我会选择选项2
编辑-在决定列的默认值之前,请考虑它的含义。如果意思是没有输入数据,我认为您应该将其保留为空。感谢的评论,请看一看。在Rails视图中,我使用如下内容:
<%= input unless input.blank? %>
并保留数据库中的数据。在Rails视图中,我使用如下内容:
<%= input unless input.blank? %>
并保留数据库中的数据。+1我同意您的总体意见(“许多选项”),但我认为将字符串
写为空不是一个好主意。表示空/未设置/单位化字段正是空值的目的。还有人可能会认为代理值属于视图,比如感谢Gabriel和Daniel的洞察力,让我思考选项和数据的意义。由于数据不完整,我选择了查看选项。感谢您的帮助,再次感谢。+1我同意您的总体意见(“许多选项”),但我认为将字符串写为空不是一个好主意。表示空/未设置/单位化字段正是空值的目的。还有人可能会认为代理值属于视图,比如感谢Gabriel和Daniel的洞察力,让我思考选项和数据的意义。由于数据不完整,我选择了查看选项。谢谢你的帮助,再次谢谢。谢谢拉索尔。谢谢你给我的宝石链接,更重要的是告诉我存在的方法。欢迎。。。“很高兴帮助你。”瓦斯比说,谢谢拉索尔。谢谢你给我的宝石链接,更重要的是告诉我存在的方法。欢迎。。。很高兴能帮助你。@WasabiDeveloper
<%= input unless input.blank? %>