Open hiroaki514 opened 2 months ago
こちらReact関係なく、Railsで実装できるものなのでこちらを進めていただけると助かります🙇♂️
イメージとしては以下の手順で実装が可能かと思います。
class AddRestrictionsToUserss < ActiveRecord::Migration[6.1]
def change
add_column :users, :can_post, :boolean, default: true
add_column :users, :can_view, :boolean, default: true
add_column :users, :can_dm, :boolean, default: true
end
end
rails db:migrate
class User < ApplicationRecord
# バリデーション
validates :can_post, inclusion: { in: [true, false] }
validates :can_view, inclusion: { in: [true, false] }
validates :can_dm, inclusion: { in: [true, false] }
# 機能の制限を確認するメソッド
def can_use_feature?(feature)
case feature
when :post
can_post
when :view
can_view
when :dm
can_dm
else
false
end
end
end
投稿、閲覧、DMのコントローラで先ほどのメソッドチェックを実行します。
# 投稿のコントローラ
class PostsController < ApplicationController
before_action :check_post_permission, only: [:create]
private
def check_post_permission
unless current_account.can_use_feature?(:post)
redirect_to root_path, alert: "この機能は利用できません。"
end
end
end
コントローラでの制限に加え、ビューでも制限を加えておきます。
<% if current_account.can_use_feature?(:post) %>
<%= link_to '新規投稿', new_post_path %>
<% else %>
<p>投稿機能は制限されています。</p>
<% end %>
各アカウントへの機能利用制限機能を追加
・投稿 ・閲覧 ・DM