【问题标题】:Ruby on Rails check the datatype length limitRuby on Rails 检查数据类型长度限制
【发布时间】:2016-12-19 11:00:08
【问题描述】:

我有一个 Rails 应用程序,我正在使用 EachValidator 方法来检查属性的长度并根据限制显示错误

验证是这样的

validates :name, :presence => {
      :message => 'Please enter name'
  }, :string => self.columns_hash["name"].type

现在在:string 自定义验证中,我现在正在传递名称列的数据类型,但我想传递数据类型长度。我怎样才能做到这一点?

【问题讨论】:

  • 对不起,什么是数据类型长度?
  • 我是说字数限制。就像字符串一样,它是 255
  • @user4965201 你的意思是mysql吗?
  • 是的,你是对的
  • 试试columns_hash['name'].limit

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

请试试这个,

 validates :name, :presence => {
          :message => 'Please enter name'
          }, :length => {
                  :maximum => columns_hash['name'].limit
              }

让我知道它是否工作正常。

【讨论】:

    【解决方案2】:
    validates :name, :presence => {
              :message => 'Please enter name'
              }, :length => { maximum: 255 } # 255 for a string data type
    

    【讨论】:

    • 我想访问存储在 sql 表中的现有数据类型限制
    【解决方案3】:

    如果我对你的理解正确,有一个可用的宝石:

    gem 'validates_lengths_from_database'
    

    然后在你的模型中简单地说:

    validates_lengths_from_database
    

    这将根据模式生成验证,以获取字符串和文本字段的最大长度。

    【讨论】:

    • 我的 sql 出现错误,当我将数据库中的 varchar(255) 更改为 varchar(6) 并输入大于 6 的值时,此 gem 没有收到错误消息
    • hmmm,有趣,这对我来说确实会引发验证错误,我在多个项目中一直在使用它,没有任何问题。如果有机会,我稍后会进行实验 - 你是如何更改字段长度的?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 2016-04-25
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多