如何使用Ruby on Rails选择具有特定值的范围字段?
- 内容介绍
- 文章标签
- 相关推荐
本文共计472个文字,预计阅读时间需要2分钟。
我在范围内部遇到了SQL查询问题。我需要返回一个独特的`Project.titles`集合及其附带的具体`id`,以便在表单中使用。我可以使用不同的`scope`:`unique_title`或`select(DISTINCT title)`,但我没有在结果选择项中找到`DISTINCT`。
我在范围内遇到SQL查询问题.我需要返回一个独特的Project.titles及其附带的id的集合,以便在表单中使用.我可以使用不同的标题
scope :unique_title, select("DISTINCT title")
但是我没有在结果选项中获得价值
= project_form.input:id,collection:current_user.projects.unique_title
结果:
<select> <option value>Item 1</option> <option value>Item 2</option> <option value>Item 3</option> </select>
所以,在我的范围中添加id:
scope :unique_title, select("DISTINCT title").select("id")
结果给出了值,但现在我的DISTINCT选择已不存在:
<select> <option value="1">Item 1</option> <option value="2">Item 2</option> <option value="3">Item 3</option> <option value="4">Item 2</option> <option value="5">Item 2</option> <option value="6">Item 2</option> </select> 我认为你将无法选择另一个领域以及保持其独特性的独特选择.
我想你可能正在寻找可以在Rails中使用的GROUP BY:
scope :unique_title, select("id, title").group("title")
但是,这将仅选择具有相同标题的组中的第一个.如果您想要所有记录但需要根据标题对它们进行分组,则需要获取所有记录,然后从Ruby中对它们进行分组.
scope :titles, select("id, title")
那你在哪里使用范围,你sh:
Model.titles.all.group_by(&:title).each do |distinct_title, records| # do something with the distinct title and records having that distinct title end
本文共计472个文字,预计阅读时间需要2分钟。
我在范围内部遇到了SQL查询问题。我需要返回一个独特的`Project.titles`集合及其附带的具体`id`,以便在表单中使用。我可以使用不同的`scope`:`unique_title`或`select(DISTINCT title)`,但我没有在结果选择项中找到`DISTINCT`。
我在范围内遇到SQL查询问题.我需要返回一个独特的Project.titles及其附带的id的集合,以便在表单中使用.我可以使用不同的标题
scope :unique_title, select("DISTINCT title")
但是我没有在结果选项中获得价值
= project_form.input:id,collection:current_user.projects.unique_title
结果:
<select> <option value>Item 1</option> <option value>Item 2</option> <option value>Item 3</option> </select>
所以,在我的范围中添加id:
scope :unique_title, select("DISTINCT title").select("id")
结果给出了值,但现在我的DISTINCT选择已不存在:
<select> <option value="1">Item 1</option> <option value="2">Item 2</option> <option value="3">Item 3</option> <option value="4">Item 2</option> <option value="5">Item 2</option> <option value="6">Item 2</option> </select> 我认为你将无法选择另一个领域以及保持其独特性的独特选择.
我想你可能正在寻找可以在Rails中使用的GROUP BY:
scope :unique_title, select("id, title").group("title")
但是,这将仅选择具有相同标题的组中的第一个.如果您想要所有记录但需要根据标题对它们进行分组,则需要获取所有记录,然后从Ruby中对它们进行分组.
scope :titles, select("id, title")
那你在哪里使用范围,你sh:
Model.titles.all.group_by(&:title).each do |distinct_title, records| # do something with the distinct title and records having that distinct title end

