假设我有一张桌子World。
我在表中有一个名为foo的字段。我想查询World表并选择foo,但我想在随后转换为 JSON 输出时将其别名为bar 。
有没有办法为这一个 ActiveRecord 查询的字段名称取别名?不希望在整个应用程序中为该字段起别名。
假设我有一张桌子World。
我在表中有一个名为foo的字段。我想查询World表并选择foo,但我想在随后转换为 JSON 输出时将其别名为bar 。
有没有办法为这一个 ActiveRecord 查询的字段名称取别名?不希望在整个应用程序中为该字段起别名。
select
只需在方法调用中使用 SQL 别名功能:
w = World.select("foo as bar").first
w.bar # returns value for foo
w.foo # ActiveModel::MissingAttributeError
我尽可能避免编写 SQL,所以我宁愿使用 ARel 来构建查询。就像是
World.select(World.arel_table['foo'].as('bar'))
使用一些语法糖,它只是:
at = World.arel_table
World.select(at['foo'].as('bar'))
to_json
您可以在您的 World 模型中覆盖方法。在此处查看有关如何执行此操作的详细信息如何在 Rails 中覆盖 to_json?