Ruby 返回一组具有不同瞬态属性的不可区分记录
我有一个Rails 3.2应用程序,我有一个模型,我们称之为汽车 用户输入一系列信息,应用程序将根据这些信息返回建议的汽车列表。现在,每辆车都有一组用户可能想要或不想要的瞬态特性,如建议的内饰、建议的颜色等。这些“建议”特性是根据用户输入的信息动态计算的。因此,应用程序不仅可以猜测用户可能想要什么样的汽车,还可以猜测用户可能想要什么样的附加选项,并将这些信息暂时存储在汽车记录中 这是汽车模型相关部分的伪密码表示:Ruby 返回一组具有不同瞬态属性的不可区分记录,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我有一个Rails 3.2应用程序,我有一个模型,我们称之为汽车 用户输入一系列信息,应用程序将根据这些信息返回建议的汽车列表。现在,每辆车都有一组用户可能想要或不想要的瞬态特性,如建议的内饰、建议的颜色等。这些“建议”特性是根据用户输入的信息动态计算的。因此,应用程序不仅可以猜测用户可能想要什么样的汽车,还可以猜测用户可能想要什么样的附加选项,并将这些信息暂时存储在汽车记录中 这是汽车模型相关部分的伪密码表示: def self.suggested_cars @cars = basic_c
def self.suggested_cars
@cars = basic_cars(user_height, user_weight)
add_upholstery_suggestions(@cars, user_wealth)
add_color_suggestions(@cars, user_gender)
end
问题在于,用于建议车辆和选项的算法可以返回不明显的实际车辆记录。例如,一个建议汽车的请求可以返回汽车A和带真皮座椅的汽车A。但是我有一个问题,因为当同时从活动记录请求两个相同实体时,两个实例引用同一个对象,即它们不能有不同的瞬态数据
我怀疑在这种情况下可能需要使用.dup方法来复制对象,但我觉得有一种更优雅的解决方案。我愿意接受任何建议。有没有一种常见的方法来处理这种情况?问题是,你有两种不同的东西,你正试图把它们强加于人。一个是汽车类型列表;另一个是汽车配置列表。汽车配置有一种汽车类型。一种车型有多种配置 通过将它们转换为两个不同的类进行修复,例如:
class Car < ActiveRecord::Base
def self.basic_cars(user)
# returns a relation
end
end
class CarConfig
attr_accessor :car, :opts
def initialize(car, opts)
@car, @opts = car, opts
end
def self.suggested_configs
configs = []
Car.basic_cars(user).each do |car|
configs << upholstery_suggestions(car, user)
configs << color_suggestions(car, user)
end
configs.flatten
end
def self.upholstery_suggestions(car, user)
[self.new(car, seats: 'standard'),
self.new(car, seats: 'leather')]
end
end
class-Car 配置为什么不能将瞬态数据附加到Car
实例?然后,当你显示它时,你可以创建你需要的任何构图。即Car
或Car+瞬态数据1
或Car+瞬态数据2
。这样就不需要复制引用同一数据库记录的对象了。谢谢