0

我想创建一个仅包含来自多个表的计算值的模型。

这已经被过了,但给定的解决方案仅适用于 Rails 2。该解决方案与 Ryan Bates 对无表模型所做的基本相同。(Railscast #193

不幸的是,这不适用于 Rails 3,它有不同的方法(Railscast #219)。(恕我直言,这些模型应该称为无数据库模型

我的第一个想法是使用 ActiveModel 方法创建一个新类,我尝试使用ActiveRecord::Base.connection纯 Arel 自己实现数据库功能,但结果证明这是一项非常艰巨的工作,所以现在我只是在滥用另一个模型:

CompletlyUnrelatedModel.select(['SUM(...) AS sum1', 'SUM(...) AS sum2', ...])...

但这有一些缺点。对我来说最大的问题是返回的属性总是String对象(因为 Rails 无法查看数据库模式来确定列类型)。此外,我真的不喜欢某个模型的实例包含完全不相关的数据。

4

0 回答 0