我有一个自定义路线设置中,将URL中的LOCATION_ID(见下文)Rails的康康舞 - 如何限制用户访问自定义URL路由
resources :menu_items, :path => "/location_menu/:location_id"
所以,当我打/location_menu/1
它会告诉我LOCATION_1菜单,/location_menu/2
将显示location_2的菜单等
每个用户关联到多个位置(has_many :locations
)
我试图用康康舞从查看某些MENU_ITEM URLS限制用户。
例如:用户1与位置1相关联和2因此,他们只能查看页面/location_menu/1
和/location_menu/2
。但他们无法查看/location_menu/3
。
我在控制器创建自定义方式作为的before_filter:
before_filter :location_check
...
def location_check
@location = Location.find(params[:location_id])
authorize! :see_location, @location
end
在我ability.rb
can :see_location, MenuItem do |location| location && user.location_ids.include?(location.id) end
出于某种原因,这并不为我工作。我可能做错了什么?如果你们能帮助我,我会非常感激!
谢谢。
做'user'和'location'是之间的关联'has_many_through' – Viren 2013-08-01 09:57:23