我有一个简单的模型

class Task < ActiveRecord::Base
  validates :deadline, :if => :deadline_in_future?

  def deadline_in_future?
    Date.today < self.deadline
  end
end

一切似乎都很好,但当我在rails控制台中

irb(main):001:0> Task.new
ArgumentError: You need to supply at least one validation

问题出在哪里?

推荐答案

你忘了告诉validates你想如何验证:deadline.我认为你误解了:if的作用;:if => :deadline_in_future?选项意味着:

仅当deadline_in_future?方法返回真值时才验证:deadline.

我怀疑你想确认最后期限是在future :

validate :deadline_in_future?

更多详细信息请参见Active Record Validations and Callbacks Guide页.

Ruby-on-rails相关问答推荐

我的 Ruby on Rails Web API 的 Docker 映像未在服务器上构建,因为它未与 ruby​​gems.org 连接

rails turbo frame 显然在更新,但浏览器窗口保持不变

Rails 7 共享刺激控制器功能

Rails 7 共享刺激控制器功能

如何保持 en.yml DRY?

rails s和bundle exec rails s有什么区别?

在 rails 3 中设置记录器

如何在终端中查看 Heroku 应用程序的当前数据库架构?

Rails:文件路径

Rails 在关联模型中排序

简单表单关联自定义标签名称

如何在 rspec 中运行单个测试?

Rails 范围为 IS NOT NULL 并且不为空/空白?

ActiveRecord 事务中的错误处理?

ruby/ruby on rails 内存泄漏检测

Rails:一次添加多个 flash[:notice] 的简单方法

如何在两个字段上对 ruby​​/rails 进行排序?

# 轨道中的 TODO

Ruby 中有与 slice 函数相反的函数吗?

如何在 Rails 4 中测试控制器关注点