【问题标题】:concatenate field names in ruby在 ruby​​ 中连接字段名称
【发布时间】:2016-02-24 06:06:15
【问题描述】:

您能告诉我如何更改字段名称吗?

首先,我这样查询一些数据:

u = User.find_by_id(111)

它将提供如下数据:

u.id,u.foo,u.bar

但是,我想将结果更改为以下内容:(“名称”是 u.foo+ u.bar 的串联)

u.id,u.name

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 activerecord


    【解决方案1】:

    你可以在user模型中定义一个方法如下:

    class User < ActiveRecord::Base
      def name
        self.foo + ' ' + self.bar
      end
    end
    

    【讨论】:

    • 谢谢!这是工作。但我想知道是否有办法从 sql 端更改字段名称?就像 select u.id, "u.foo + u.bar" as name from user u
    • 您可以使用find_by_sql,但会失去active_record 的好处。
    【解决方案2】:

    连接两个不同数据类型的字段时,需要使用#

    例如,用+将一个整数和字符串相加会报错。

    所以最好这样使用它。

    class User < ActiveRecord::Base
      def name
        "#{foo} #{bar}"
      end
    end
    

    希望细节有所帮助。

    【讨论】:

    • 什么是foo 是零?
    • 它只会打印bar
    • 是的,我明白了,但是名字会有一个意想不到的空格!
    猜你喜欢
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2020-07-16
    • 2013-03-20
    • 1970-01-01
    • 2014-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多