Rails scope find with current user

后端 未结 3 415
失恋的感觉
失恋的感觉 2021-02-01 20:43

I\'m using Rails 3 with Devise for user auth. Let\'s say I have a User model, with Devise enabled, and a Product model, and that a User has_many Products.

In my Products

3条回答
  •  春和景丽
    2021-02-01 21:42

    You could add a class method on Product with the user sent as an argument.

    class Product < ActiveRecord::Base
      ...
    
      def self.for_user(user)
        user.admin? ? where({}) : where(:owner_id => user.id)
      end
    

    Then you can call it like this:

    Product.for_user(current_user).find(params[:id])
    

    PS: There's probably a better way to do the where({}).

提交回复
热议问题