首页 > 解决方案 > 如何限制 Sinatra/Active Record 中数据库字符串值的字符/字数?

问题描述

我的ActiveRecord数据库中有一个列,我希望有一定的字数限制。

本质上,我创建了一个允许用户输入文本(字符串)的表单。我想限制该字符串中允许的字符数量。

@allposts = Post.limit(20)

到目前为止,这就是我在/current发布所有内容的页面的 get 方法中所拥有的。20 = 显示的帖子数。

我还有一个/new页面,用户将在其中发布新内容。

标签: rubyactiverecordsinatra

解决方案


您可以通过几种不同的方式限制字符数:

1.定义您创建的 HTML 字段的限制:

<input class="ip-input" id="ip" maxlength="15" name="ip" size="20" type="text" value="0.0.0.0" />

通过更改 maxlength 属性。示例取自这里

2.在用户模型中使用 validates 选项:

validates :attribute_you_want_to_limit, length: { maximum: 50 }

您可以在此处找到有关此选项的更多信息。

3.在模式中设置限制:

t.string :your_attribute, :limit => 20

第一个选项不允许用户在字段中输入更多内容,第二个选项不允许保存对象,第三个选项不允许将属性保存到数据库中。

我推荐第二种选择。

您还可以通过几种不同的方式使用 Javascript,这里有一个很好的解释。


推荐阅读