ruby-on-rails – Rails范围:选择带有值的不同标题

我在范围内遇到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,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

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...