查找与整个哈希匹配的项目

时间:2016-03-31 20:59:13

标签: ruby-on-rails ruby-on-rails-4 activemodel

我发现自己在Rails中多次遇到同样的情况。我有一个大致对应于模型的哈希,我想找到是否存在匹配哈希中所有键/值对的模型实例。 Rails有办法做到这一点吗?如果没有,我可以包含第三方库/功能吗?

例如,我很乐意做类似的事情:

person_hash = { name: "John Doe", favorite_color: "chartreuse" }
p = Person.ultra_cool_find(person_hash)

puts p.name=="John Doe"             #true
puts p.favorite_color=="chartreuse" #true

2 个答案:

答案 0 :(得分:1)

尝试:

Person.find_by(person_hash)

Rails文档:https://msdn.microsoft.com/en-us/library/azure/jj927170.aspx

答案 1 :(得分:1)

人是ActiveRecord模型吗?

你试过吗

p = Person.find_by(name: person_hash[:name])

如果你的person_hash有任何唯一字段,这将有效。例如,如果只有一个人的名字叫John Doe,那么上面的例子就可以了。

否则

p = Person.where(name: person_hash[:name]).where(favorite_color: person_hash[:favorite_color])

您可以按

添加要搜索的每个项目的位置