查找与整个哈希匹配的项
Find item(s) that match an entire hash
我发现自己在 Rails 中多次遇到同样的情况。我有一个大致对应于模型的散列,我想查找是否存在与散列中所有 key/value 对匹配的模型实例。 Rails 有办法做到这一点吗?如果没有,我可以包括第 3 方 library/function 吗?
例如,我喜欢做这样的事情:
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
尝试:
Person.find_by(person_hash)
Rails 文档:http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by
Person 是 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])
您可以通过
为每个要搜索的项目添加一个位置
我发现自己在 Rails 中多次遇到同样的情况。我有一个大致对应于模型的散列,我想查找是否存在与散列中所有 key/value 对匹配的模型实例。 Rails 有办法做到这一点吗?如果没有,我可以包括第 3 方 library/function 吗?
例如,我喜欢做这样的事情:
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
尝试:
Person.find_by(person_hash)
Rails 文档:http://api.rubyonrails.org/classes/ActiveRecord/FinderMethods.html#method-i-find_by
Person 是 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])
您可以通过
为每个要搜索的项目添加一个位置