0

我需要从表中加载模型验证并验证我的模型。例如,我有一个名为验证的数据库表,其中包含如下行:

validation_action       validation_condition
----------------        --------------------

validates_presence_of    if answer_name is name
validates_format_of      if answer_type is date

在我的模型中,我想要:

class Model < ActiveRecord::Base

load validation_actions , lambda {if validation_condition is true}

好的更详细:

我正在创建一个用于进行调查的应用程序。我将问题存储在一个表格中,并将答案存储在另一个表格中。我需要将每个答案的验证存储在问题表中,并在接受之前验证每个答案。我可以查询每个问题的验证并在控制器中运行它,但我想在模型中执行它,因为它更干净。

所以两个模型:

Questions -> table questions sas code and details about questions
Answers -> table answers stores answers with a foreign key to Questions.

我想根据问题数据库表中定义的条件验证 Answers 模型中的输入。

请让我知道是否需要更多详细信息?

4

1 回答 1

0

如果我理解正确,您的问题有很多相关的答案,也有相关的 ValidationActions。保存答案时,您希望根据存储在属于其关联问题对象的 ValidationActions 中的评估代码对其运行验证。

这似乎是个坏主意。与其说验证是以关联对象(问题)的状态为条件的,那是确实发生的事情,但您正在做的事情相当于从数据库的内容中执行代码。这是让 Web 开发人员紧张的事情之一——安全问题是最明显的原因(如果有人可以编辑您的数据库的字段,他们可能会导致任意代码在您的系统上运行),但即使在外面,这也绝对是一个值得怀疑的做法那个(我无法更令人信服地阐明原因,而不是“代码就是代码,数据就是数据,永远不会相遇”,但确实如此)。

综上所述,应该可以编写一个自定义验证器处理这个问题。它无疑会效率低下,很可能容易损坏,并且可能是一个安全漏洞,除非它写得非常仔细。但这是可能的。

于 2013-08-29T03:23:15.830 回答