ruby-on-rails - 表中列中的字符限制与 Rails 中的验证

标签 ruby-on-rails validation limit varchar

我是 Rails 初学者,想问这个问题:

如何在表中设置名称列 (t.string :name, :limit => 5) 中的字符限制与验证 validates_length_of :name, :is => 5?

第一个在我使用时并没有真正起作用。即使我将限制设置为 5,每次我保存名称超过 5 个字符的记录时,它仍会保存它。它的实际用途是什么?

验证是在保存记录时限制人名字符方面的作用。

我是否混淆了在表中设置字符限制以限制某人可以输入数据库的字符数?

最佳答案

t.string :name, :limit => 5

does not really work when I use it.

这是你的主要问题。这确实如您预期的那样工作。你做错了什么。我只是做了以下步骤;跟随以确保您没有遗漏任何东西

rails g migration CreateFoos my_string:string
# open up the migration file and change it to this

class CreateFoos < ActiveRecord::Migration
  def change
    create_table :foos do |t|
      t.string :my_string, limit: 5
    end
  end
end

使用以下信息创建 Foo 文件

# app/models/foo.rb
class Foo < ActiveRecord::Base
end

现在运行你的迁移和测试

rake db:migrate
rails c
Foo.create(my_string: '12345')
Foo.create(my_string: '123456')

最后一行应该会抛出一个错误(我正在使用 postgresql)。如果不是,至少 Foo.count 应该只返回 1

关于ruby-on-rails - 表中列中的字符限制与 Rails 中的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35614306/

相关文章:

javascript - 表单验证(包括输入文件)的问题

mysql - 删除和更新限制在mysql查询中的重要性

mysql - 返回MySQL中每一行的索引值

ruby-on-rails - 我如何在 capybara 中单击此按钮

ruby-on-rails - 没有路由匹配 [GET]/assets

javascript - Joi 验证 ||在对象数组中,至少一个对象应包含某个键的特定值

MySQL:查询前n个聚合

ruby-on-rails - 从 cardmagic/contacts gem 检索联系人时救援身份验证错误

ruby-on-rails - 如何在 Rails 中设置默认日期格式

JavaScript - 从函数中获取返回值