ruby-on-rails - collection_select concat firstname 和 lastname 具有相同的 id

标签 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 连接起来,然后按名字顺序排列姓氏?

最佳答案

试试这个:

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, ' ')

关于ruby-on-rails - collection_select concat firstname 和 lastname 具有相同的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41571850/

相关文章:

ruby - 如何为 Chef 处理程序安装依赖项?

ruby-on-rails - Ruby 中的方法链是如何工作的?

ruby-on-rails - Rails 5 集合选择

ruby-on-rails - Rails4 collection_select 与数据选项

ruby-on-rails - ActiveRecord 模糊搜索

ruby-on-rails - 在 Sunspot 中以不区分大小写的字母顺序排序结果

ruby-on-rails - 如何在使用 vim 时快速访问 ruby​​ 和 rails 文档?

ruby-on-rails - Rails 找不到生成器类

ruby-on-rails - 我可以使用 Windows 开发设置中的 Capistrano 部署到 Linux 服务器吗?

ruby-on-rails - has_many :through and collection_select rails form