Resource.all
时,在ruby控制台上它会给我以下内容:
[<Resource id:'...', name_translated:{"en"=>'vehicle',"fr"=>'véhicule'}> ...]
如何选择Resource.find_by_name_translated(&#34; vehicle&#34;)
答案 0 :(得分:4)
这可行,但我认为这不是最有效的方式:
#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
答案 1 :(得分:1)
如果你的数据库不允许通过json字段查询,我会使用正则表达式查询:
<?php
$jsondata = file_get_contents('http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key=<api key>&steamid=<steamid>&relationship=friend');
$data = json_decode($jsondata, true);
foreach ($data['friendslist'] AS $d){
echo $d['friends'];
}
?>