私は、 "ドキュメント"を操作するユーザーがいるRails 3サイトを持っています。各文書は私の文書コントローラの編集方法のために、その後のuser_idを持っていた場合返されたレコードをユーザーの役割に基づいて制限する方法はありますか?
私は何かのように、現在のユーザーが所有する文書に結果を制限できます。
@doc = current_user.documents.find(params[:id])
respond_with(@doc)
残念ながら、それは単純ではありません。各ユーザーは、中間の「サブスクリプション」によってドキュメントとの関係を持つことができます。これらのドキュメントは、所有者、エディタ、またはリーダーです。
これで、私の編集方法では、取得した文書を所有者または編集者である人に限定したいと考えています。これはどうすればいいですか?現在、私は次のように私の文書モデルにスコープを持っている:私はその後、私の編集方法で行くことができるように
scope :editable_by, lambda { |user| joins(:subscriptions).where("user_id = ? AND (subscriptions.role = ? OR subscriptions.role = ?)", user.id, Subscription::ROLES['owner'], Subscription::ROLES['editor']) }
:
@doc = Document.editable_by(current_user).find(params[:id])
よりよい方法はありますか?
Ta。私はそれと一緒に行くつもりです。私はまあまあそれを得たことを知ってよかった。 – kmc