下面的代码,最后的问题。
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
从控制器操作
调用模块class CarsController < ApplicationController
def create
Vehicle::Car.create_my_car(params)
Vehicle::Car.specs
end
end
执行操作
请求1(好)
http://127.0.0.1:3000/cars?type=small
{:wheels=>"3"}
but you already have a car!
请求2(Bad)实例已存在。 type = huge应该创建一个有8个轮子的汽车,但实例已存在来自上一个请求
http://127.0.0.1:3000/cars?type=huge
{:wheels=>"3"}
but you already have a car!
让模块/类仅在控制器请求期间持续的最佳方法是什么?换句话说,我不希望请求2使用来自请求1的数据
答案 0 :(得分:4)
让模块/类仅在控制器请求期间持续的最佳方法是什么?换句话说,我不希望请求2使用来自请求1的数据
在这种情况下,不使用类级数据。将您的规范存储在类的实例中,而不是类本身。