开发者

How do I extract this so it can be reused in other parts of my app?

开发者 https://www.devze.com 2023-02-06 14:34 出处:网络
I have this method in my book model but now I realize I need this in a category model as well: def proper_user?(logged_in_user)

I have this method in my book model but now I realize I need this in a category model as well:

def proper_user?(logged_in_user)
  return false unless logged_in_user.is_a? User
  user == logged_in_user
end

I now have this method duplicated in the books model and the category model. Both category and books has belongs_to :user and both have the user_id:integer in the table as well. I simply want to extract this somewhere where so I can its DRY.

i tried to put the method in application_controller.rb but it sa开发者_JAVA技巧ys undefined method `proper_user?' for #

Thanks

Jeff


I think you'd want to be able to call this method like this:

book.proper_user?(current_user)

So it would work best to define it in each model rather then in User. This is best done by mixing in a module with the method:

module UserMethods
  def proper_user?(logged_in_user)
    # ... etc ...
  end
end

and including it in each model:

class Book < AR::Base
  include UserMethods

class Category < AR::Base
  include UserMethods

The module can go in a source file in config/initializers, or you can put it elsewhere and change config.autoload_paths in config/environment.rb to point to the location.


Since it is related to the User model, why not put it there?

0

精彩评论

暂无评论...
验证码 换一张
取 消