У меня есть пользователиКанкан - новая форма терпит неудачу, когда пользователь ограничен определенным сайтам
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
Я использую канкан, чтобы ограничить доступ, поэтому пользователи могут управлять только 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.
Стандартная форма предлагает выпадающий список всех сайтов, и я думаю, мне нужно, чтобы ограничить это только собственному сайт пользователя. Как мне это сделать?
Спасибо за подробный ответ. Я думал, что ': create' был псевдонимом, чтобы включить': new', но это наоборот! – Edward