5

假设我有一张桌子World

我在表中有一个名为foo的字段。我想查询World表并选择foo,但我想在随后转换为 JSON 输出时将其别名为bar 。

有没有办法为这一个 ActiveRecord 查询的字段名称取别名?不希望在整个应用程序中为该字段起别名。

4

3 回答 3

15

select只需在方法调用中使用 SQL 别名功能:

w = World.select("foo as bar").first
w.bar # returns value for foo
w.foo # ActiveModel::MissingAttributeError
于 2013-06-03T19:50:04.767 回答
1

我尽可能避免编写 SQL,所以我宁愿使用 ARel 来构建查询。就像是

World.select(World.arel_table['foo'].as('bar'))

使用一些语法糖,它只是:

at = World.arel_table
World.select(at['foo'].as('bar'))
于 2021-04-19T09:10:33.223 回答
0

to_json您可以在您的 World 模型中覆盖方法。在此处查看有关如何执行此操作的详细信息如何在 Rails 中覆盖 to_json?

于 2013-06-03T19:49:53.473 回答