Sql 了解Rails选择方法

Sql 了解Rails选择方法,sql,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-4,Sql,Ruby On Rails,Ruby,Ruby On Rails 3,Ruby On Rails 4,我不太确定在rails上进行SQL查询时如何使用select方法。我非常熟悉where子句、order子句、布尔条件等。。。然而,select让我有点困惑,下面是一个例子: >> b = BillableWeek.select("mon_hrs + tues_hrs as two_day_total").first select到底在这里做什么?一般来说,它的功能是什么 在上面的例子中,我猜它是从BillableWeek对象中选择列的mon_hrs&tues_hrs,将它们相加,并

我不太确定在rails上进行SQL查询时如何使用select方法。我非常熟悉where子句、order子句、布尔条件等。。。然而,select让我有点困惑,下面是一个例子:

>> b = BillableWeek.select("mon_hrs + tues_hrs as two_day_total").first
select到底在这里做什么?一般来说,它的功能是什么

在上面的例子中,我猜它是从BillableWeek对象中选择列的mon_hrs&tues_hrs,将它们相加,并将结果存储在总共两天中


不过,两天总计也是一列吗?

select
ActiveReocrd类上的方法重写用于从数据库中获取记录的sql select语句。您给出的示例将执行查询:

SELECT mon_hrs + tues_hrs as two_day_total FROM billable_weeks LIMIT 1

它将只返回一列(表中不存在),称为
two_day_total
,是存储在两个实列
mon_hrs
tues_hrs
:select
可以执行许多不同的查询。但我相信您正在做的是创建一个可以由ActiveRecord调用的别名方法。下面是来自的示例

它不会永久地将实际列添加到数据库中,因为在某种意义上,如果我们通过方法调用不断地添加和删除列,那么迁移将变得毫无意义。简而言之,将这两个值相加并对其进行别名化的查询只是创建一个用于返回该值的快捷方式,而不是一列

#If an alias was specified, it will be accessible from the resulting objects:

Model.select('field AS field_one').first.field_one
# => "value"