0

私はUser自分自身を編集できるようにしようとしていDashboardます。

これを実現するためにCanCanDeviseを使用しています (管理機能を支援するためにRolifyもインストールされていますが、この状況には当てはまらないと思います)。

ユーザーがログインしていて、root/users/id/dashboard.id の :show ダッシュボード ページにアクセスすると、認証に失敗しますが、(ファイルに指示されてuser.idいるように) にリストされているものと同じです。dashboard.user_idability.rb

ユーザーが自分のダッシュボードを表示できるようにするにはどうすればよいですか?

関連するコードは次のとおりです。

dashboards_controller.rb:

class DashboardsController < ApplicationController
  before_filter :authenticate_user!

  def show
    @dashboard = Dashboard.find(params[:format])
    authorize! :read, current_user, :message => 'Not authorized to view this dashboard.'
  end
 end

ability.rb:

user ||= User.new

if user.has_role? :default # All of my users have this role
    can :read, Dashboard, :user_id => user.id
end

からroutes.rb

resources :users do
  resource :dashboard, only: [:show, :edit, :update, :destroy]
end

User.rb:

#  id                     :integer          not null, primary key
#  email                  :string(255)      default(""), not null
#  encrypted_password     :string(255)      default(""), not null
#  reset_password_token   :string(255)
#  reset_password_sent_at :datetime
#  remember_created_at    :datetime
#  sign_in_count          :integer          default(0)
#  current_sign_in_at     :datetime
#  last_sign_in_at        :datetime
#  current_sign_in_ip     :string(255)
#  last_sign_in_ip        :string(255)
#  created_at             :datetime
#  updated_at             :datetime
#
class User < ActiveRecord::Base
  rolify
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_one :dashboard
  before_create :build_dashboard

end

Dashboard.rb:

# Table name: dashboards
#
#  id                        :integer          not null, primary key
#  user_id                   :integer
#  has_selected_account_type :boolean          default(FALSE)
#  created_at                :datetime
#  updated_at                :datetime
#
class Dashboard < ActiveRecord::Base
    belongs_to :user
end
4

1 に答える 1