0

私のサイトの操作方法によっては、一部のレコードはユーザーによって作成されますが、部分的にしか記入されません。管理者はレコードフィールドのいくつかを完了する必要があります。私は、管理フィールドに関連するすべてのバリデーションをサブクラスに入れることを考えていました。 /app/models/document.rbで例えば Rails 3 Admin Section Design Question継承と名前空間について

、: /app/models/admin/document.rb

class Document < ActiveRecord::Base 
    # minimal validations needed, etc 
end 

(私は構文は以下のRuby有効であるかどうかさえわからない)

class Admin::Document < Document 
    # Extra validations for the fields the admin 
end 

私のアプローチは悪い考えでしょうか?私はCanCanのようなものを使って役割ベースの認証を行うことも計画しています。

答えて

2

代わりに、CanCanを使用して、管理者がユーザー文書を完成させることができますが、レコードをサブクラス化したり、2つに分割したりするのではないでしょうか。フォームがadministrated(またはapproved)フィールドを追加提出された場合、その1つの管理またはいくつかのあなたはきっと一日の終わりにunadministrated(またはunapproved

で検索することができれば、管理彼らができるので、最終的な提出を行いますadministrated(またはapproved)をtrueに設定します。それによってドキュメントを完成させますか?

1

すべての検証を1つのクラスに保存し、管理者がレコードが完成したかどうかを格納するbooleanデータベース列を持つ方が良いかもしれないと思います。レコードが最初に作成され

class Document < ActiveRecord::Base 
    attr_protected :completed_by_administrator # do not allow this to be set via mass assignment 
    validate ..., :if => :completed_by_administrator # only do these validates if completed_by_administrator is true 
end

completed_by_administrator falseで、管理者のみの検証は実行されません。管理者によってレコードが完了したら、コントローラーにcompleted_by_administrator = trueを設定し、管理者のみの検証が自動的に実行されてから、レコードが保管されます。

関連する問題