0

テーブルからモデルの検証を読み込み、モデルを検証する必要があります。たとえば、次のような行を持つvalidationsというデータベーステーブルがあります。

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}

わかりました詳細:

アンケートを取るためのアプリを作成しています。質問をテーブルに保存し、回答を別のテーブルに保存しています。各回答の検証を質問テーブルに保存し、各回答を承認する前に検証する必要があります。各質問の検証をクエリしてコントローラーで実行できますが、代わりにモデルで実行したいので、はるかにクリーンです。

だから2つのモデル:

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

私の理解が正しければ、多くの Answers が関連付けられており、ValidationActions も関連付けられている質問があります。回答が保存されている場合、関連付けられている質問オブジェクトに属する ValidationActions に格納されているコードの評価に基づいて、回答に対して検証を実行する必要があります。

これは悪い考えのようです。関連するオブジェクト (質問) の状態に基づいて検証が行われるというようなことはあまりなく、データベースの内容からコードを実行することになります。これは、Web 開発者をいらいらさせるものの 1 つです。セキュリティの問題が最も明白な理由です (誰かがデータベースのフィールドを編集できる場合、システム上で任意のコードが実行される可能性があります)。それ(「コードはコードであり、データはデータであり、両者が一致することは決してない」よりも説得力のある理由を明確にするのに苦労していますが、そこにあります)。

とはいえ、ここで説明されているように、これを処理するカスタムバリデーターを作成できるはずです。間違いなく非効率的で、破損しやすい可能性があり、非常に慎重に書かない限り、おそらくセキュリティ ホールになります。しかし、それは可能です。

于 2013-08-29T03:23:15.830 に答える