2017-01-30 4 views
1

コード以下、最後に質問してください。モジュール/クラスライブラリ

module Vehicle 
     class Car 
      @car = {} 
      def self.create_my_car(options={}) 
       if @car.any? 
        puts "but you already have a car!" 
        return 
       end 
       if options.key?(:type) 
        if options[:type] == 'small' 
         @car.merge!(wheels: '3') 
        elsif options[:type] == 'huge' 
         @car.merge!(wheels: '8') 
        elsif options[:type] == 'normal' 
         @car.merge!(wheels: '4') 
        end 
       else 
        @car.merge!(wheels: '4')    
       end 
      end 

      def self.my_car(options={}) 
       create_my_car unless @@car 
       puts "car has 4 wheels" 
      end 

      def self.specs(options={}) 
       puts @car.to_s 
      end 
     end 
    end 

すでにアクション

要求1(グッド)

http://127.0.0.1:3000/cars?type=small 
{:wheels=>"3"} 
but you already have a car! 

要求2(悪い)のインスタンスを実行するコントローラのアクションから

class CarsController < ApplicationController 
    def create 
     Vehicle::Car.create_my_car(params) 
     Vehicle::Car.specs 
    end 
end 

をモジュールを呼び出します存在する。巨大なタイプ=が8つの車輪が付いている車を作成する必要がありますが、インスタンスがすでに以前の要求

http://127.0.0.1:3000/cars?type=huge 
{:wheels=>"3"} 
but you already have a car! 

からが存在するだけのコントローラ要求の期間中最後のモジュール/クラスを有することに最善のアプローチは何ですか?言い換えれば、リクエスト1のデータをリクエスト2に使用することを希望しません。

答えて

4

コントローラリクエストの間のみモジュール/クラスを使用する最良の方法はありますか?言い換えれば、私は要求2はこの場合、リクエスト1

からのデータを使用することにしたくない、はない利用クラスレベルのデータを行います。スペックはクラス自体ではなくクラスのインスタンスに格納します。