【问题标题】:ActiveRecord query alias field name outputActiveRecord 查询别名字段名输出
【发布时间】:2013-05-30 01:42:13
【问题描述】:

假设我有一张桌子世界

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

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

【问题讨论】:

  • 只是为了评论。就像 Mori 在发布此问题之前概述的那样,我正在使用别名。它对我不起作用,因为我选择的别名与我与应用程序关联的 gem (Paperclip) 冲突。示例:我试图将 image_file_name 别名为 image。但由于我认为是 Paperclip 所做的,我无法使用图像别名。将其更改为其他内容(例如 img)有效。

标签: ruby-on-rails


【解决方案1】:

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

w = World.select("foo as bar").first
w.bar # returns value for foo
w.foo # ActiveModel::MissingAttributeError

【讨论】:

    【解决方案2】:

    我尽可能避免编写 SQL,所以我宁愿使用 ARel 来构建查询。类似的东西

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

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

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 2015-04-25
        • 1970-01-01
        • 2011-08-18
        • 1970-01-01
        • 2017-11-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多