Ruby Rails 4:修改现有模型柱

Ruby Rails 4:修改现有模型柱,ruby,ruby-on-rails-4,Ruby,Ruby On Rails 4,当我在现有模型中有一个名为“fullname”的列时,我想将该列中存储的字符数限制为50个。实现这一目标的最佳方法是什么?使用rails迁移?或者在应用程序/模型中编写一些代码来进行语法检查?您真的应该同时执行这两项操作。您希望数据库强制执行数据限制,因为这可以防止应用程序代码中的任何错误允许无效数据。创建rails迁移以更改列的数据类型。例如 change_table :table_name do |t| t.change :column_name, :string, :limit =&g

当我在现有模型中有一个名为“fullname”的列时,我想将该列中存储的字符数限制为50个。实现这一目标的最佳方法是什么?使用rails迁移?或者在应用程序/模型中编写一些代码来进行语法检查?

您真的应该同时执行这两项操作。您希望数据库强制执行数据限制,因为这可以防止应用程序代码中的任何错误允许无效数据。创建rails迁移以更改列的数据类型。例如

change_table :table_name do |t|
  t.change :column_name, :string, :limit => 50
end

您还应确保应用程序代码中的数据少于50个字符,否则,如果您尝试插入大于50个字符的值,将出现错误。rails实现这一点的方法是在模型中进行活动记录验证。有关活动记录验证的信息,请参见链接

我可以直接修改现有的migration.rb文件吗?还是必须使用rails迁移命令
class CreateUsers50 t.string:email t.string:postalcode t.timestamps end
如果修改并重新运行现有,您必须恢复现有迁移中的任何其他更改,否则它将再次尝试执行这些更改。正确的方法是创建一个新的迁移。如果您与所有需要进行更改的开发人员团队合作,这一点尤其重要。如果您只进行了一次迁移,并且希望对其进行编辑、删除并重新创建数据库,那么这将非常有效,感谢您的富有洞察力的评论。我必须阅读更多关于迁移的最佳实践。我目前只有一个迁移文件。