【问题标题】:Rails: List Required Attributes For CreateRails:列出创建所需的属性
【发布时间】:2015-12-22 14:41:14
【问题描述】:

我正在使用Model.new(<attributes here>) 在rails 控制台中手动创建对象。有没有一种简单的方法可以列出模型需要我包含哪些属性才能使.save 调用成功?

我正在运行 rails 4.2.3

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-4 activerecord model rails-console


    【解决方案1】:

    您可以使用Model.validators 获取一组验证器。您必须以某种方式对其进行解析以提取这些验证是否存在,例如:

    presence_validated_attributes = Model.validators.map do |validator|
      validator.attributes if validator.is_a?(ActiveRecord::Validations::PresenceValidator)
    end.compact.flatten
    

    【讨论】:

      【解决方案2】:

      我找到了一种更简单的方法来完成同样的事情:

      当您创建失败时,您可以检查对象上的错误消息。

      # app/models/price.rb
      class Price < ActiveRecord::Base
        validates_presence_of :value
      end
      
      # in console
      p = Price.new()
      => #<Price id: nil, created_at: nil, updated_at: nil, value: nil>
      
      p.save
      => false
      
      p.errors.messages
      => {:value=>["can't be blank"]}
      

      【讨论】:

        【解决方案3】:

        如果您的强制属性带有错误消息

        book = Book.new
        book.valid?
        book.errors.messages
        

        如果您只想要属性名称而没有错误消息

        book = Book.new
        book.valid?
        book.errors.messages.keys
        

        【讨论】:

          猜你喜欢
          • 2016-01-17
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-22
          相关资源
          最近更新 更多