ユーザーがいます
class User < ActiveRecord::Base
devise :database_authenticatable,
:recoverable, :rememberable, :trackable, :validatable
attr_accessible :email, :password, :password_confirmation,
:remember_me, :site_id, :role_name
belongs_to :site
end
サイト
class Site < ActiveRecord::Base
has_many :users
has_one :front_page_campaign
end
およびfront_page_campaigns
class FrontPageCampaign < ActiveRecord::Base
belongs_to :site
end
私はcancanを使用してアクセスを制限しているので、ユーザーは自分のサイトのfront_page_campaignsのみを管理できます。
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new # guest user (not logged in)
case user.role_name
when "super_admin"
# can do everything
can :manage, :all
when "editor"
# can edit content for their site
can [:create, :read, :update], FrontPageCampaign, site_id: user.site_id
end
end
end
これは、role_nameを持つユーザー、super_admin
およびでのeditor
表示と編集で完全に機能しますfront_page_campaigns
。しかしeditor
、新しいfront_page_campaignを作成しようとすると、カンカン禁止の通知が表示されます
You are not authorized to access this page.
標準フォームにはすべてのサイトのドロップダウンボックスがあり、これをユーザー自身のサイトだけに制限する必要があると思います。どうすればこれを行うことができますか?