'véhicule'}> ...] 我如何进行选择,使得 Resource.f-6ren">
gpt4 book ai didi

ruby - 根据译名选择记录

转载 作者:数据小太阳 更新时间:2023-10-29 08:31:12 31 4
gpt4 key购买 nike

在 ruby​​ 控制台上,当我执行 Resource.all 时,它会给我以下信息:

[<Resource id:'...', name_translated:{"en"=>'vehicle',"fr"=>'véhicule'}> ...]

我如何进行选择,使得 Resource.find_by_name_translated("vehicle")

最佳答案

这可行,但我认为这不是最有效的方法:

#app/models/resource.rb

def self.find_by_english_name(name)
Resource.all.select do |resource|
resource.name_translated['en'] == name
end
end

如果你想用一种方法找到多种语言(默认为英语),试试这个:

def self.find_by_name(name, language = 'en')
Resource.all.select do |resource|
resource.name_translated[language] == name
end
end

因为你使用的是 Postgres,这也可以写成如下:

def self.find_by_name(name, language = 'en')
Resource.where("name_translated ->> '#{language}' = '#{name}'")
end

关于ruby - 根据译名选择记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33215040/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com