Как написать именованную область для подзапросов в Active Record Rails - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь получить уникальные записи из таблицы на основе столбца категории. Этот запрос выдает те уникальные записи, которые были протестированы на MYSQL. Но я хочу знать, как написать в Rails то же самое, что и именованная область. Может кто-нибудь дать мне знать, как написать область для следующего запроса в приложении Rails 5:

SELECT * FROM t where id = (select min(id) from t t2 where t2.category = t.category);

1 Ответ

1 голос
/ 09 мая 2019

У меня была такая же реализация, надеюсь, вы можете получить помощь.

category.rb

class Category < ApplicationRecord
  has_many :category_details
end

category_detail.rb

class CategoryDetail < ApplicationRecord
  belongs_to :category
   scope :get_first_category_vise_details, -> {order(:category_id).group_by(&:category_id).map{|cat_detail_group| cat_detail_group.last.first} }
end

select * from categories;

+----+------+
| id | name |
+----+------+
|  1 | abc  |
|  2 | xyz  |
+----+------+

select * from category_details;

+----+-------------+-------------+
| id | category_id | description |
+----+-------------+-------------+
|  1 |           1 | test        |
|  2 |           1 | test1       |
|  3 |           1 | test2       |
|  4 |           2 | test        |
|  5 |           2 | testabc     |
+----+-------------+-------------+

CategoryDetail.get_first_category_vise_details

[#<CategoryDetail id: 1, category_id: 1, description: "test">, #<CategoryDetail id: 4, category_id: 2, description: "test">] 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...