ruby-on-rails - Ruby on Rails 4:有效吗?总是返回真
问题描述
我正在尝试在我的课堂上使用验证器来验证我的 API 上的信息。但是当我调用valid时它总是返回true?
你知道为什么吗?我正在使用 Rails 4。
class Address
include ActiveModel::Model
include ActiveModel::Validations
include ActiveModel::AttributeMethods
attr_accessor :street
validates :street, length: { minimum: 10, maximum: 100 }
end
address = Address.new
address.street = 'aa'
address.valid? (returns true)
解决方案
我无法使用 Rails 4.2.10 重现这一点。也许你需要升级到 Rails 4.2.latest???
Loading development environment (Rails 4.2.10)
Frame number: 0/5
[1] pry(main)> class Address
[1] pry(main)* include ActiveModel::Model
[1] pry(main)* include ActiveModel::Validations
[1] pry(main)* include ActiveModel::AttributeMethods
[1] pry(main)*
[1] pry(main)* attr_accessor :street
[1] pry(main)*
[1] pry(main)* validates :street, length: { minimum: 10, maximum: 100 }
[1] pry(main)* end
=> {:length=>{:minimum=>10, :maximum=>100}}
[2] pry(main)> a = Address.new
=> #<Address:0x00007fb728c42b10>
[3] pry(main)> a.street = 'aa'
=> "aa"
[5] pry(main)> a.valid?
=> false
[6] pry(main)> a.errors
=> #<ActiveModel::Errors:0x00007fb728bafce8
@base=#<Address:0x00007fb728c42b10 @errors=#<ActiveModel::Errors:0x00007fb728bafce8 ...>, @street="aa", @validation_context=nil>,
@messages={:street=>["is too short (minimum is 10 characters)"]}>
推荐阅读
- reactjs - 动态组件的动态道具类型 - React TypeScript
- arduino - 将 AI-Thinker ESP32-cam 连接到 Adafruit PCA9685 伺服控制器板
- latex - Latex 更改字体大小 - Awesome Source CV
- python - 输入字节 6 处的非法 base64 数据
- r - 将 R 配置为默认使用 utf-8
- apache-flink - flink 1.12.2 所有事件都被丢弃
- javascript - 如何为 ngx-pagination 添加样式?
- c++ - 如何在不指定维度的情况下使用 Eigen 声明张量?
- postgresql - 创建在 UPDATE 上设置时间戳的触发器
- extjs - Sencha GXT3 : 具有滚动功能的水平布局容器