【问题标题】:collection_select concat firstname and lastname with same idcollection_select concat firstname 和 lastname 具有相同的 id
【发布时间】:2017-05-25 02:54:03
【问题描述】:

我正在尝试获取具有相同 ID 的名字和姓氏。
我的表架构如下所示:

| id | nameable_id | nameable_type | value | type      |
| 1  | 2           | Person        | John  | Firstname |
| 2  | 2           | Person        | Doe   | Lastname  |

我想使用具有预期输出的collection_select

<select name="source[person_id]" id="source_person_id">
<option value="2">John Doe</option></select>`

如何将这些值与相同的 nameable_id 连接起来,然后按姓氏排序?

【问题讨论】:

    标签: ruby-on-rails ruby collection-select


    【解决方案1】:

    试试这个:

    collection_select(:source, :person_id, Source.select("sources.id, GROUP_CONCAT(sources.value separator ' ') as name").group("sources.nameable_type,sources.nameable_id"), :id, :name, prompt: true)
    

    Group_concat 仅适用于 mysql。如果您使用其他数据库:

    • PostgreSQL: string_agg(sources.name, ' ')
    • Oracle:listagg(sources.name, ' ')

    【讨论】:

    • 非常感谢。您的解决方案只需稍作修改即可适用于我;)f.collection_select(:person_id, Name.select("names.nameable_id, GROUP_CONCAT(names.value) as name").group("names.nameable_type, names.nameable_id"), :nameable_id, :name, prompt: true
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    • 2019-03-08
    • 2012-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多