ruby-on-rails - Rails 模型验证以检查属性的值

标签 ruby-on-rails ruby ruby-on-rails-3

我有一个Project 模型和一个User 模型。一个项目必须有一个客户端(用户类),所以 Project 模型有一个 client_id 外键。

User 模型有一个 type 属性,如果用户是客户端,它将包含 3

我想验证当项目分配给客户时,@user.type3

项目.rb

validates :client_id, presence: true, #@user.type must be 3
belongs_to :client, :class_name => User, :foreign_key => :client_id

用户.rb

#constants
TYPES = {
    :manager => 1,
    :contractor => 2,
    :client => 3
}

不确定如何进行验证。我通读了有关验证的 Rails 指南,但似乎仍然无法找到解决方案。有什么想法吗?

最佳答案

使用inclusion 验证助手。 Docs here

这是文档中的一个简单示例

class Coffee < ActiveRecord::Base
  validates :size, :inclusion => { :in => %w(small medium large),
    :message => "%{value} is not a valid size" }
end


编辑:

好的,我明白你的意思了。不要为此使用验证助手,手动执行。

# somewhere in your model (don't be tempted to put this in your controller)
def assigning_client
  if @user.type == 3
    # do the assignment
  else
    errors.add(:base, :message => "User must be a client")
  end
end

只要您使用 bang 版本 save! 强制验证,该错误就会阻止信息被保存。

关于ruby-on-rails - Rails 模型验证以检查属性的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11424322/

相关文章:

ruby - 如何使用 Mechanize 获取元素节点

ruby-on-rails-3 - Rails 3 - 如何发送文件以响应 rails 中的远程表单?

ruby-on-rails-3 - 无法在 M1 Macbook Pro 中安装 'therubyracer v0.12.3' gem

ruby-on-rails-3 - 在开发环境中离线运行 Rails 应用程序时,.js 和 .css 文件出现 "Failed to load resource"错误

sql - Rails 4 查询带有数组数据类型错误的 postgresql 列

ruby-on-rails - 设计:注册 Rails 4 后自定义字段未保存

ruby-on-rails - 在 rails3 中使用非英语 Controller

ruby-on-rails - Thinking Sphinx 索引方法之间的区别

ruby-on-rails - 如何在 Rails 3.0 应用程序中使用来自 Twitter 的 Bootstrap?

ruby - Rspec - 在另一个 let 语句中使用 let 语句中定义的变量