我想创建一个模型对象列表,指定一个新的关系,而不必使用原始的SQL。
假设我有以下型号:
class MealCombination < ActiveRecord::Base
belongs_to :drink
belongs_to :food
end
class Food < ActiveRecord::Base
has_many :meal_combinations
end
class Drink < ActiveRecord::Base
has_many :meal_combinations
end
我想创建一个目前数据库中不存在的MealCombination对象列表。
说我的查询看起来像这样:
select distinct DRINK.id, FOOD.id from FOOD, DRINK where DRINK.alchohol_volume > 5 and FOOD.spice_factor > 45;
从此选择中创建MealCombination
个对象的最有效方法是什么?
迭代从原始sql返回的数组似乎效率低下。我不想将对象持久化到数据库中。
答案 0 :(得分:0)
最简单的方法可能是创建一个名为&#34; meal_combinations&#34;在您的数据库中,它将代表您要执行的选择查询。 ActiveRecord应该将视图视为一个表,但你绝对应该添加
def read_only?
true
end
到任何使用视图的类定义。拥有大量视图的主要缺点是,如果您想要更改基础表中的列,它们会使数据库迁移变得更难以管理。