質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

2回答

3633閲覧

railsのadminの設計に関して

yoshimitsu41

総合スコア36

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2018/01/09 12:36

rails初心者です。
現在勉強しながらrailsにてアプリケーションを開発中です。

ユーザーの情報を
-user
-owner
-admin

という3つのアカウントに分けたいと思っています。
※adminはアプリ管理者専用です。

userはownerとメッセージのやり取りや様々な情報が閲覧・更新が出来て
adminはアプリ運営者がすべての情報を閲覧できる様な仕組みにしたいのですがどのように設計するのが最適でしょうか?

未熟なりに色々調べてnamespaceでadminの名前空間を作ってする方法も検討したのですが作成するモデル、コントローラーの数が多くて全てにnamespaceを作成するのは大変だなぁと感じております。
※それが最善であればそうするのですが…。

選択肢をご教授頂ければ幸いです。
※rails adminなどのgemを使ってする方法も検討しておりますがカスタマイズ性?操作性?が良ければ良いのですが…。

よろしくお願いいたします!

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

ユーザー権限管理は、よくありがちな機能です。
したがって世の中のはそのための gem が存在しています。

参考情報

  • CanCanCanは権限管理のgem

https://qiita.com/motoakim/items/ece5c3722125fe6b04c0

...
AdminUserは、すべてのページを閲覧、及び編集することができる。
PremiumReaderは、すべてのページを閲覧することができる。
Readerは、一部のページのみ閲覧することができる。
こんな感じの権限を付与したい場合にとっても便利なGemです
...

  • Pundit + Railsで認可の仕組みをシンプルに作る

https://qiita.com/zaru/items/8bf7b41b33f3f55bd27d

...
cancancanはユーザに対して、どんなアクションが許可するかを定義するのに対して、Punditではリソースに対して誰が許可されるのかを定義します。反対からの目線ですね。cancancanがコントローラ寄りならば、Punditはモデル寄りの責務です。また、cancancanがDSLなのに対し、PunditはピュアRubyな書き方になっています。
...

こういったものを利用するか、
そういった gem がどのような仕組みで権限管理をおこなっているかを調査してその方法をまねて自分のアプリ用に設計をしてみてはいかがでしょう?

投稿2018/01/09 22:07

編集2018/01/09 22:30
katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshimitsu41

2018/01/10 01:28

自分ですべて開発するのは時間かかりそうでスピード感に欠けるので権限管理のgemをもう少し調べて実装していこうと思います!ありがとうございました!
guest

0

実装する環境により設計が変わってくると思いますので、概念的なコメントになりますが、RailsでWebアプリを作成する前提として、次のように考えてみては如何でしょうか。

・3つのアカウントに対し、アクセスレベルを定義する
・各種情報に対して公開レベルを設定する
・アクセスレベルと公開レベルの組み合わせで表示する情報を決定する
・情報の公開を特定の複数ユーザーとする場合は、ユーザーグループで束ねる

プログラムソースを個別にするのではなく、データ・情報に属性を持たせて、属性値で判断する仕組みを作れば、機能改修もやりやすいのでは?と思いました。

投稿2018/01/09 15:47

Shara

総合スコア125

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshimitsu41

2018/01/10 01:27

属性をもたせるという考え方なのですね! ありがとうございます。参考になりました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問