【问题标题】:Add a column to an existing database?向现有数据库添加列?
【发布时间】:2011-12-13 19:59:14
【问题描述】:

我正在使用 rails 3.1.3、postgreql9.1 和 ruby​​ 1.9.3。

我想在现有数据库中添加一个列,该列实际上是两个现有列的串联,即;名字和姓氏。

如何做到这一点?

我想要全名的原因是在显示员工时,我只想显示全名,但我需要将名称分成两部分以用于其他功能。

这个问题的另一部分是,虽然我只希望员工的全名显示在报告中,但我还希望显示员工的电子邮件和主要职位,然后有一个链接,称为信息,单击该链接将给出一份关于员工的详细报告,显示员工表中的所有属性。

到目前为止,我有一个基本的员工页面。

任何读者有耐心和愿意分享一些关于如何完成这项任务的指示、指导和/或建议?

谢谢,

汤姆。

【问题讨论】:

  • 选择名字 || ' ' || last_name as fullname from... - 这将连接查询中的名字和姓氏...当它可以轻松地在查询中重现时,您有什么理由想要存储全名? || (管道符号)是在 postgres 中连接的快速方法(你会注意到我使用这个在名字和姓氏之间放置了一个空格)。您也可以使用相同的逻辑在其中添加一个中间名首字母或排序。

标签: ruby-on-rails postgresql views


【解决方案1】:

如果您需要在数据库中创建真实字段,您可以使用migrations

但在这种情况下,您可以使用虚拟属性:

在你的模型中创建两个方法:

def full_name
   [first_name, last_name].joun(' ')
end

def full_name=(name)
    split = name.split(' ', 2)
    self.first_name = split.first
    self.last_name = split.last
end  

并添加到您的视图中:

<p> Full name </p>  
<%= f.text_field :full_name %>

【讨论】:

  • 谢谢 tewlfth、zed_oxff、jamesTheprogrammer 和 @demas,你们都给了我很多好东西……我认为不添加到数据库,并将遵循该建议。再次感谢。
【解决方案2】:

你不能只连接视图中的名称吗?

实际上没有必要以这种方式复制数据库数据。

【讨论】:

    【解决方案3】:

    虽然您可以在不按照建议编辑 db 结构的情况下解决此问题,但您可以创建一个新的 db col,并且将来可能需要编辑 db 结构。

    试试这个页面,你的数据库类型的管理工具 http://en.wikipedia.org/wiki/PostgreSQL#Database_administration.

    这件看起来很合身。

    pgAdmin

    “pgAdmin 包是一个免费和开源的 PostgreSQL 图形用户界面管理工具,在许多计算机平台上都受支持”。

    一个人的鱼,他吃一天。教人钓鱼,吃一辈子。

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-03
      • 2018-02-27
      相关资源
      最近更新 更多