【问题标题】:How to perform model validation in rails?如何在 Rails 中执行模型验证?
【发布时间】:2017-05-26 02:33:00
【问题描述】:

我有一个 Rails 应用程序,其中 Activity 是具有以下属性的资源之一:

  • status(记录活动“进行中”、“完成”的状态)
  • 开始(活动开始的日期)
  • 结束(活动结束的日期)

鉴于没有具有相同状态的现有活动,我想为状态为“进行中”的活动创建新记录。我相信这可以使用模型验证来完成,但是对于 Rails 新手我不知道如何。

【问题讨论】:

  • 您是否将enum 用于status 属性?
  • 我目前正在使用string,但enum 会更有意义

标签: ruby-on-rails validation rails-activerecord


【解决方案1】:

如果statusenum,你可以这样做:

class Activity < ApplicationRecord
  enum status: [ :in_progress, :complete ]

  validates_uniqueness_of :status, if: :in_progress?
end

此验证限制您只有一个具有in_progress 状态的activity

如果status 是一个字符串,你可以这样做:

class Activity < ApplicationRecord
  validates_uniqueness_of :status, if: proc { |activity| activity.status == 'in_progress' }
end

【讨论】:

    猜你喜欢
    • 2014-06-09
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多