如何从模型中的不同语言环境中获取id号

j91ykkif  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(337)

我的rails应用程序中有一个模型(category.rb)配置如下:
id、名称、区域设置
1,社交能力,英语
2、谨慎和谨慎
三,社會性,台湾地区
4,"謹慎性,細膩性",台湾地区
我想知道不同语言环境的初始id,例如:en的初始id为“1”,而“zh tw”的初始id为“3”。除了在应用程序中硬编码来定义初始id之外,是否有任何gem或方法来标识初始id?所以在将来,当我添加新记录为5,sociabilidad,es时,我可以不必硬编码就正确地获得id?
请告知。谢谢您。

wvyml7n5

wvyml7n51#

我会用ar写如下:

class Category < ApplicationRecord
  scope :first_in_locale, ->() {
    joins(<<-SQL)
      JOIN (SELECT locale, min(id) AS id FROM categories GROUP BY locale) b ON b.id = categories.id
    SQL
    .select('categories.*')
    .order('categories.id')
  }
end

在rails控制台中:

2.5.1 :010 > pp Category.first_in_locale
  Category Load (0.9ms)  SELECT categories.* FROM "categories" JOIN (SELECT locale, min(id) as id from categories group by locale) b on b.id = categories.id ORDER BY categories.id
[#<Category:0x00007fc597e3db68
  id: 1,
  name: "Sociability",
  locale: "en",
  created_at: Sun, 16 Sep 2018 07:47:34 UTC +00:00,
  updated_at: Sun, 16 Sep 2018 07:47:34 UTC +00:00>,
 #<Category:0x00007fc597e3d3e8
  id: 3,
  name: "社會性",
  locale: "zh-TW",
  created_at: Sun, 16 Sep 2018 07:47:34 UTC +00:00,
  updated_at: Sun, 16 Sep 2018 07:47:34 UTC +00:00>]

下面是我用activerecord方式 Package 的sql答案。

相关问题