【问题标题】:ruby methods scope and DRY [closed]ruby 方法范围和 DRY [关闭]
【发布时间】:2013-10-10 11:25:38
【问题描述】:
  def ads
    @ads = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10)
  end

  def events
    @events = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10)
  end

  def pets
    @pets = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10)
  end

  def companies
    @companies = @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10)
  end

如何将此代码重构到某个范围

【问题讨论】:

  • 不清楚您希望完成什么。具体目标是什么?
  • 类似@ads = @search.scope_name
  • 不清楚,@ads 应该等于“城市范围”、“国家范围”还是“国际”?或者'scope_name'是什么。

标签: ruby methods scope


【解决方案1】:

不清楚您真正想要归档什么。在不知道上下文的情况下,我会将您的代码重写为以下内容:

%w( ads events pets companies ).each do |name|
  class_eval <<-END_OF_RUBY, __FILE__, __LINE__ + 1

    def #{name}
      @#{name} = search
    end

  ENF_OF_RUBY
end

private 
  def search
    @search.result.recent.completed.paginate(page: params[:page], per_page: 10).limit(10)
  end

【讨论】:

    猜你喜欢
    • 2011-10-04
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-28
    • 2014-11-10
    • 1970-01-01
    相关资源
    最近更新 更多