我是 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/