轨道控制器良好做法

时间:2012-05-23 10:25:27

标签: ruby-on-rails methods self

我有一个如下的SpecificController,

class SpecificController < ApplicationController    

  def specific_search # ===== Main =======

    self.set_instance_variables

    self.set_product_id_sub_category_id

    unique_ids = self.get_unique_ids(@product_id,@sub_category_id,["out of stock","permanently discontinued"])

    self.set_grid("online",unique_ids)

    self.set_grid("local",unique_ids)

  end

  def include_exclude # ===== Main =======

     @type = params[:type].to_s

     self.set_product_id_sub_category_id

     self.set_sub_category_name(@sub_category_id)

     unique_ids = self.get_unique_ids(@product_id,@sub_category_id,["permanently discontinued"])

     self.set_grid(@type,unique_ids)

  end

  def set_instance_variables #===== Sub ====

     @cities = Cities.find(:all)
     @areas = []
     @feature_array = Array.new
     @online_grids = Array.new
     @local_grids = Array.new

  end

  def set_product_id_sub_category_id #===== Sub ====

    if params[:specific_product_id].present? && params[:sub_category_id].present?

        @product_id = params[:specific_product_id].to_i
        @sub_category_id = params[:sub_category_id].to_i

    end

  end

  def get_unique_ids(product_id,sub_category_id,exclude_availabilities_array) #===== Sub ====
  - 
  -
  -
  unique_ids

  end

  def set_grid(grid_type,unique_ids) #===== Sub ====

    if grid_type == "online"

       @online_grids = OnlineGridDetails.get_grid(unique_ids)

    elsif grid_type == "local"

       @local_grids = LocalGridDetails.get_grid(unique_ids)

    end

  end

end

在上面的类中,标记为“Main”的方法是我使用的方法。 标记为“Sub”的其他方法都由主要方法使用“self”调用。 这是一个好习惯吗? 如果不是,那些“Sub”方法属于哪里?

1 个答案:

答案 0 :(得分:1)

如果它可以帮助你导航和阅读你的代码,那么whatevs,伙计。

我个人将所有辅助方法放在文件底部的private部分。