collection_select concat firstname和lastname具有相同的id

时间:2017-01-10 15:00:46

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

我正在尝试获取具有相同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连接起来并命名firstname(s)和lastname(s)?

1 个答案:

答案 0 :(得分: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,'')
  •