[RUBY-ON-RAILS] 레일 : 나는 열에서 고유 한 값을 얻을 수있는 방법
RUBY-ON-RAILS레일 : 나는 열에서 고유 한 값을 얻을 수있는 방법
어떻게 테이블의 열에서 고유 값을받을 수 있나요? 예를 들어,이 제품 테이블이 있습니다 :
ID NAME CATEGORY
1 name1 1st_cat
2 name2 2nd_cat
3 name3 1st_cat
여기에 단지 2 값 싶어 - 1st_cat 및 2nd_cat를 :
<%Products.each do |p|%>
<%=p.category%>
<%end%>
해결법
-
==============================
1.두 더 많은 방법 :
두 더 많은 방법 :
Product.select(:category).map(&:category).uniq # Ruby does the work Product.uniq.pluck(:category) # DB does the work (superior)
레일> = 5.1 사용 :
Product.distinct.pluck(:category) # DB does the work (superior)
... 관계 #의 UNIQ는 사용되지 않습니다 때문이다.
-
==============================
2.나는 당신이 할 수 있다고 생각 :
나는 당신이 할 수 있다고 생각 :
<% Products.select("DISTINCT(CATEGORY)").each do |p| %> <%= p.category %> <% end %>
출처 : http://guides.rubyonrails.org/active_record_querying.html#selecting-specific-fields
-
==============================
3.이 데이터베이스 서버에서 모든 작업을 수행합니다. 결과는 간단한 배열이다.
이 데이터베이스 서버에서 모든 작업을 수행합니다. 결과는 간단한 배열이다.
<% Product.distinct(:category).pluck(:category).each do |category| <%= category %> <% end %>
레일은 SQL을 생성하는 모든 데이터베이스에 작업 (포스트 그레스, MySQL은, 등).
SELECT DISTINCT "products"."category" FROM "products"
-
==============================
4.(: 카테고리) 나는 Products.all.distinct.pluck를 사용하는 것이 좋습니다 UNIQ 레일 5부터 사용되지 않습니다 때문에 그것은 레일 5.1에 제거됩니다
(: 카테고리) 나는 Products.all.distinct.pluck를 사용하는 것이 좋습니다 UNIQ 레일 5부터 사용되지 않습니다 때문에 그것은 레일 5.1에 제거됩니다
-
==============================
5.합니다 (콘솔 레일에서)이 시도
합니다 (콘솔 레일에서)이 시도
Product.group(:category) Product.group(:category).each { |p| p.name }
-
==============================
6.포스트 그레스의 경우
포스트 그레스의 경우
<% Product.select("DISTINCT ON (category) *").each do |category| <%= category %> <%= name %> <% end %>
더 나은
<% Product.select(%(DISTINCT ON (category) "#{Product.table_name}".*)).each do |category| <%= category %> <%= name %> <% end %>
당신이 결합 할 때 잘못된 열을 반환 할 수 있기 때문에 (예를 들어 제품을 조인 된 테이블에서 id 컬럼을 반환하지만하지 않음)
-
==============================
7.고유의 출력을 얻기 위해 필요하고 실패 하 'UNIQ'방법을 시도하고 있었다. 시도 몇 가지 솔루션은 실패 여기에 게시. 나는 (: 가지 항목의 has_many를) 나에게 CURRENT_USER 방법에 대한 액세스를 제공합니다 유증을 사용하여 조인되는 두 테이블을 일하고 있어요.
고유의 출력을 얻기 위해 필요하고 실패 하 'UNIQ'방법을 시도하고 있었다. 시도 몇 가지 솔루션은 실패 여기에 게시. 나는 (: 가지 항목의 has_many를) 나에게 CURRENT_USER 방법에 대한 액세스를 제공합니다 유증을 사용하여 조인되는 두 테이블을 일하고 있어요.
이 솔루션은 궁극적으로 나를 위해 일한 :
@current_user.things.select(:item_fk).distinct.each do |thing| <%= thing.item.attribute %> <% end %>
from https://stackoverflow.com/questions/8369812/rails-how-can-i-get-unique-values-from-column by cc-by-sa and MIT license
'RUBY-ON-RAILS' 카테고리의 다른 글
[RUBY-ON-RAILS] 레일 3, 호환되지 않는 문자 인코딩에 루비 : UTF-8 및 국제화와 ASCII-8BIT (0) | 2020.02.29 |
---|---|
[RUBY-ON-RAILS] 루비에 업로드 된 파일의 MIME 유형을 감지 (0) | 2020.02.29 |
[RUBY-ON-RAILS] 루비 / 레일 - 변경 값을 변경하지 않고 시간의 시간대, (0) | 2020.02.29 |
[RUBY-ON-RAILS] 트위터 부트 스트랩 CSS와 충돌 활성 관리자 CSS를 레일 (0) | 2020.02.29 |
[RUBY-ON-RAILS] 루비 : sqlite3를 :: BusyException : 데이터베이스가 잠겨 있습니다 : (0) | 2020.02.29 |