【问题标题】:find_by_sql changes datatype of aliased columnsfind_by_sql 更改别名列的数据类型
【发布时间】:2013-06-24 04:51:11
【问题描述】:

一个基本的 ActiveRecord 查询返回一个不带引号的 id,例如:

User.first.attributes => {"id"=>2, ...

在 find_by_sql 中,别名列以引号中的值返回,在这种情况下参见 id:

all = User.find_by_sql("SELECT u.id as u_id from users u").first.attributes => {"u_id"=>"2"}

如何避免引用值?

【问题讨论】:

  • 为什么要使用find_by_sql和别名id
  • 需要跨多个表联合 3 个选择语句。 alias 允许我确定哪些 id 属于哪些模型,然后将它们更改为带引号的字符串。

标签: sql ruby-on-rails find-by-sql


【解决方案1】:

find_by_sql 按名称将返回的列映射到对象字段。如果您在结果集中返回不同的列名,Rails 无法知道要返回什么类型。 (所以它可能会将所有内容映射到字符串 - 疯狂猜测)

【讨论】:

    猜你喜欢
    • 2019-11-08
    • 2011-04-19
    • 1970-01-01
    • 2013-09-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多