私はdevise
を使用しています。これまではdevise
コントローラを3人のユーザー(user1、user2、admin)のビューとともに追加しました。どのコントローラーにもbefore_action :authenticate_user!
はありません。基本的にthisはこれまで私が行ったことです。
したがって、現在登録されているすべてのユーザーは、ログインしてすべてのコンテンツを表示/編集できます。この時点では、各ユーザーが自分のコンテンツのみを表示または編集するように制限したいと考えています。Rails:ユーザーが自分のコンテンツのみを表示または編集できるようにします。
これは基本的に私が後にしていることです。管理者はすべてのアプリケーションにアクセスできます。ユーザー1はget 'books/search' => 'books#search', as: 'search_books'
にアクセスし、root 'books#search'
にアクセスします。また、User2は `resources:books 'を使って本を追加/削除/編集することができ、現在のアカウントも表示することができます。
resources :plans, resources :accounts, resources :transactions
にどのようなアクセス権を与えるべきかわかりません。プランは、トランザクションとともにプランを購入するためのものであり、アカウントはuser2に属します。あなたは以下の関連を見ることができます。
私はこれに関する少しの研究を行い、ユーザーに役割を追加するgems
,CanCan
、rolify
というカップルを見つけました。
devise
でロールを実装できる別の方法はありますか?あなたは何ができるか
Rails.application.routes.draw do
root 'books#search'
get 'books/search' => 'books#search', as: 'search_books'
get "/cancel_subscription", to: "accounts#cancel_subscription", as: "cancel_subscription"
devise_for :admins, controllers: {registrations: 'admins/registrations', sessions: 'admins/sessions'}, :class_name => 'Admin' do
get "admins/dashboard"=> "admins/sessions#dashboard", :as => "admin_dashboard"
end
devise_for :users1, controllers: {registrations: 'users1/registrations', sessions: 'users2/sessions'}
devise_for :users2, controllers: {registrations: 'users2/registrations', sessions: 'users2/sessions'}
resources :books do
resources :comments
end
resources :categories
resources :plans
resources :accounts
resources :transactions, only: [:new, :index, :create]
end
class Comment < ApplicationRecord
belongs_to :book
belongs_to :user1
end
class Books < ApplicationRecord
has_many :comments
end
class User1 < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :comments
end
class User2 < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :account, autosave: true
has_many :books
accepts_nested_attributes_for :account
end
class Admin < ApplicationRecord
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
あなたはここで達成しようとしていることについて混乱していると思います。あなたがしたいのは、ユーザーを 'admin'とマークする機能を追加するだけです。なぜなら、' is_admin'ブール列を'users'テーブル?コントローラ/許可ロジックを設定する際に問題がある場合は、問題を診断できるように**コードを表示してください**。 –
pundit gemを使うべきです。 => https://github.com/elabs/pundit <=それはあなたが必要とするものです。 –
マルチユーザサポートの実装方法について詳しく説明できますか?ユーザーとそのコンテンツはどのように接続されていますか、関連はどのように定義されていますか? – spickermann