Rails/PostgreSQL:向文本添加字符限制

Posted

技术标签:

【中文标题】Rails/PostgreSQL:向文本添加字符限制【英文标题】:Rails/PostgreSQL: Adding character limit to text 【发布时间】:2016-09-04 01:22:22 【问题描述】:

我想为我的 Ruby on Rails 应用程序的 PostgreSQL 数据库中的数据值实施字符限制。目前我的数据库表如下所示:

create_table "applications", force: :cascade do |t|
    t.string   "name"
    t.string   "gender"
    t.date     "date_of_birth"
    t.string   "gpa"
    t.text     "essay"
    t.datetime "created_at",    null: false
    t.datetime "updated_at",    null: false
end

我想改变它,所以“论文”只允许 10000 个字符。根据我对 PostgreSQL 的有限理解,默认情况下文本是无限的,而字符串是 255 个字符或更少。我考虑过实现一个 javascript 条件,如果文本超过 1,000 个字符,则不让用户点击客户端中的提交按钮,但当然,精通技术的用户可以改变这一点。执行此操作的最佳方法是什么?

【问题讨论】:

没关系,但你的意思是 10000 还是 1000? 【参考方案1】:

使用 rails 模型验证 - validates_length_of。

在 Rails 端,您可以将其添加到 application.rb 文件中

validates_length_of :essay, :maximum => 1000

这将确保不超过最大尺寸。还要保留 javascript 验证,因为它对除恶意用户之外的所有用户都有帮助。

另外我建议您将表名从applications 更改。你很容易混淆

【讨论】:

以上是关于Rails/PostgreSQL:向文本添加字符限制的主要内容,如果未能解决你的问题,请参考以下文章

从 Wikipedia 获取随机摘录(Javascript,仅限客户端)

从 Wikipedia 获取随机摘录(Javascript,仅限客户端)

PHP 将feedburner计数添加到您的站点 - 仅限文本

python中向文本每行行尾添加字符

向启用文本框 (C#) 的 Web 部件添加按钮,出现错误:无法将类型“bool”隐式转换为“字符串”

向用户站立的文本框添加值[重复]