如何提取这个以便它可以在我的应用程序的其他部分重用?

时间:2011-01-26 05:54:53

标签: ruby-on-rails ruby-on-rails-3

我在我的书模型中有这个方法,但现在我意识到我在类别模型中也需要这个:

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

我现在在书籍模型和类别模型中重复了这种方法。类别和书籍都有belongs_to:user,并且两者在表格中都有user_id:integer。我只是想把它提取到哪里,所以我可以干它。

我试图把这个方法放在application_controller.rb中,但它说未定义的方法`proper_user?'对于#

由于

杰夫

2 个答案:

答案 0 :(得分:1)

我认为您希望能够像这样调用此方法:

book.proper_user?(current_user)

因此,最好在每个模型中定义它,而不是在User中定义它。最好通过将模块与方法混合来实现:

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

并将其包含在每个模型中:

class Book < AR::Base
  include UserMethods

class Category < AR::Base
  include UserMethods

模块可以放在config / initializers中的源文件中,或者你可以将它放在别处并在config / environment.rb中更改config.autoload_paths以指向该位置。

答案 1 :(得分:0)

由于它与用户模型有关,为什么不把它放在那里?