2017-04-10 49 views
2

我有2個表格:帖子和用戶(他們的關係是多對多),用戶有很多favorite_posts(與FavoritePost表(它由user_id和post_id組成) 所以,我有路線:
獲得 'favorite_posts',到: 'favorite_posts#指數' (用戶/:USER_ID/favorite_posts) 在我ability.rb:塊重定向到其他帖子頁

class Ability 
    include CanCan::Ability 

    def initialize(user) 
    user ||= User.new 
    if user.new_record? 
     can :read, [Post] 
    else 
     can :read, [Post] 
     can :manage, [Post], owner_id: user.id 
     can :manage, [FavoritePost], user_id: user.id 
    end 
    end 
end 

在我的控制器(favorite_posts_controller.rb):

class FavoritePostsController < ApplicationController 
    load_and_authorize_resource through: :current_user 

    def index 
    @favorite_posts = User.find(params[:user_id]).favorite_posts 
    end 

所以,我需要阻止重定向到其他用戶最喜歡的帖子通過ability.rb頁面。我需要做什麼?

回答

0

採取從慘慘維護者看看這個quote

慘慘能回答這個問題是否用戶可以或不可以做 東西,但什麼應用程序不會從有特定 非常上下文我不認爲它適合ability.rb文件。

如果你不想讓其他用戶查看當前用戶的喜愛帖子,最好把這個在​​before_action過濾器在您的favorite_posts_controller

class FavoritePostsController < ApplicationController 
    load_and_authorize_resource through: :current_user 
    before_action :correct_user, only: [:index] # add any other actions you want 

    def index 
    @favorite_posts = current_user.favorite_posts.all 
    end 

    private 

    def correct_user 
     user = User.find(params[:user_id]) 
     redirect_to root_url unless current_user && current_user == user 
    end 
end 
相關問題