Ruby on rails Rails:这个方法应该放在哪里?

Ruby on rails Rails:这个方法应该放在哪里?,ruby-on-rails,ruby-on-rails-4,model-view-controller,Ruby On Rails,Ruby On Rails 4,Model View Controller,对于不同类型的内容,我的应用程序中有多个模型,我经常需要获取最近发布的模型。目前,我正在我的应用程序控制器中使用helper\u方法:最新内容 这是放这种方法的最好地方吗?如果是这样,我应该如何为它编写rspec测试?听起来您在多个模型中有一个通用的功能。Rails有关注点,允许您这样做 # app/models/concerns/searchable.rb module Searchable extend ActiveSupport::Concern module ClassMeth

对于不同类型的内容,我的应用程序中有多个模型,我经常需要获取最近发布的模型。目前,我正在我的应用程序控制器中使用
helper\u方法:最新内容


这是放这种方法的最好地方吗?如果是这样,我应该如何为它编写rspec测试?

听起来您在多个模型中有一个通用的功能。Rails有
关注点
,允许您这样做

# app/models/concerns/searchable.rb
module Searchable
  extend ActiveSupport::Concern

  module ClassMethods
    def last_content
      # ... here whatever is the content of :last_content
    end
  end
end 


# app/models/model_x.rb
class ModelX < ActiveRecord::Base
  include Searchable
  ...
end

# app/models/model_y.rb
class ModelY < ActiveRecord::Base
  include Searchable
  ...
end
#app/models/concerns/searchable.rb
模块可搜索
扩展ActiveSupport::关注点
模块类方法
def last_内容
# ... 这里有什么内容:最后的内容
结束
结束
结束
#app/models/model_x.rb
类ModelX
请显示多个型号的代码以及
最新内容
方法。谢谢!这听起来正是我需要的。我将研究关注点。也许我还不了解关注点——听起来这只是在模型中添加了通用功能?然后,如果我想找到最新的内容,我需要做一些类似于
Article.last.latest\u content
,即使这可能会返回
Blog
或其他类?(为了澄清,我需要知道我所有模型中的最新内容,而不仅仅是每个模型中的内容。)理想情况下,我希望能够调用
link\u以查看最新的内容。关注点用于通用模型功能。例如,可搜索、可评论、可评估等。如果您希望有一种方法可以跨各种模型返回总体
最新内容
,您可以使用新的模型类(可能包含相同模型的其他常用方法)或助手。我通常会尽量减少助手中的代码。