ruby-on-rails - 在数据库中实现 Ruby on Rails 验证规则而不是在模型文件中进行硬编码?

标签 ruby-on-rails validation model ruby-on-rails-3.2

我有一个应用程序,我想在其中将所有数据库验证规则存储在数据库中,因为管理员需要能够从 GUI 更改验证规则。此外,规则预计会经常更改,因此我的要求是规则需要在数据库中。

为简单起见,假设我有一个用户模型,“名称”需要存在的验证规则。通常,你会说:

class User < ActiveRecord::Base
  validates :name, presence: true
end

有什么方法可以将此规则粘贴到规则表中,查询数据库中的规则,然后让模型根据规则表中的规则进行验证?即像这样在模型文件中编写查询的简单方法?

class User < ActiveRecord::Base
  Rule.first.validation
end

Rule.first.validation 的值为“validates :name, presence: true”。

谢谢。

最佳答案

这是可能的(比如使用 validateseval),但非常有限且有风险。另外,您正在将验证从可测试和部署为工作的地方转移到数据库,在那里它受制于您的系统管理员的突发奇想。我强烈建议不要以这种方式违背惯例。从长远来看,您最好频繁推出更新(并进行相应的测试)。

关于ruby-on-rails - 在数据库中实现 Ruby on Rails 验证规则而不是在模型文件中进行硬编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15867834/

相关文章:

ruby-on-rails - 创建用户可以加入的 'groups',什么是好的方法?

java - 创建帐户时的验证 JAVA

php - 通过超链接单击重新加载页面后保留表单值

表示家庭、家庭和关系的数据库模型

java - 从 Java 运行 Ruby 脚本

ruby-on-rails - 开始新的 Rails 3.0 项目时应该使用 ruby​​ 1.9.2 吗?

ruby-on-rails - 用于 has_many 关系的 Rails 动态外键

node.js - 为什么mongoose要这样设计?

jquery - 如何使用rails3-jquery-autocomplete插件进行多个单词自动完成

c# - 同步层之间的验证值