Ruby on rails 如何在不更改ActiveRecord的情况下验证保存的记录?

Ruby on rails 如何在不更改ActiveRecord的情况下验证保存的记录?,ruby-on-rails,validation,activerecord,ruby-on-rails-5,Ruby On Rails,Validation,Activerecord,Ruby On Rails 5,我的Rails5.1.4项目ha有车站模型,并且有一些保存的记录 class Station < ApplicationRecord end > Station.first # => #<Station:0x0055f5ca447d78 id: 1, name: nil> 然后我添加了新的validationpresence检查名称 class Station < ApplicationRecord with_options on: [:publish

我的Rails5.1.4项目ha有车站模型,并且有一些保存的记录

class Station < ApplicationRecord
end

> Station.first
# => #<Station:0x0055f5ca447d78 id: 1, name: nil>
然后我添加了新的validationpresence检查名称

class Station < ApplicationRecord
  with_options on: [:publishing] do
    # added new validation
    validates :name, presence: true
  end
end
这里,如果验证!在不更改属性的情况下调用的方法。验证方法返回true

> reload!
> station = Station.first
# => #<Station:0x0055f5cf4b6228 id: 1, name: nil>
> station.validate!(context: :publishing) # without attributes changing
# => true
# expected ActiveRecord::RecordInvalid raising.
我有一个问题

我希望ActiveRecord引发ActiveRecord::RecordInvalid,因为我为名称添加了状态验证

class Station < ApplicationRecord
  with_options on: [:publishing] do
    # added new validation
    validates :name, presence: true
  end
end
我可以这样做吗


认为

论点错误。试着这样称呼它:

station.validate!(:publishing)
文档:

是否尝试使用有效的

它应该可以很好地工作:

注:
其他答案建议使用validate两者都可以,因为validate是valid?的别名?。检查

您是否正在处理现有记录的情况?谢谢您的评论!不,我不是。只要录一张唱片,然后打电话确认就行了!方法我不能复制这个。Rails 5.1.4,像expectedoh一样工作,很抱歉validates方法在带有on选项的\u选项块中,我调用validate!具有上下文键的方法。我更新了我的问题。@kolas我也在工作,没有任何选项。很抱歉我想用\u选项块验证此处的更多信息是否有效?:发布将显示验证结果!太好了!谢谢是 啊谢谢我原以为我可以使用验证!像save!这样的方法!。谢谢你的帮助!