collection_select 用相同的 id 连接名字和姓氏
collection_select concat firstname and lastname with same id
我正在尝试获取具有相同 ID 的名字和姓氏。
我的 Table 架构如下所示:
| 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
连接起来并按名字顺序排列,然后按姓氏顺序排列?
试试这个:
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, ' ')
我正在尝试获取具有相同 ID 的名字和姓氏。
我的 Table 架构如下所示:
| 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
连接起来并按名字顺序排列,然后按姓氏顺序排列?
试试这个:
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, ' ')