我正在使用这种形式的数组:
class Portfolio extends Model
{
public function transaction()
{
return $this->hasMany('App\Transaction', 'id_portfolio', 'id_portfolio');
}
public function user()
{
return $this->belongsTo('App\User', 'id_user', 'id');
}
}
我需要找出此数组中是否有"car_documents_attributes"=>{
"1562523330183"=>{
"id"=>"", "filename"=>"tyYYqHeqSFOnqLHEz5lO_rc_tispor12756_6wldwu.pdf", "document_type"=>"contract"
},
"1562523353208"=>{
"id"=>"", "filename"=>"a9P8TyECRiKbI2YdRVZy_rc_tispor12756_bbtzdz.pdf", "document_type"=>"request"
},
"1562523353496"=>{
"id"=>"", "filename"=>"WCM5FHOfSw6yNSUrfPPm_rc_tispor12756_dqu9r2.pdf", "document_type"=>"notes"
},
...
}
= document_type
(可以是一个,一个或多个)的项目。
我这样做的方式是逐项循环遍历数组,如果有数十个项目,这可能会很慢。
是否有更好,更快的方法来简单地检查数组中是否为contract
= document_type
的项?
答案 0 :(得分:2)
这是包含更多哈希的哈希。您可以做的是访问aws amplify
,迭代这些哈希值,并检查是否有任何car_documents_attributes
是“ contract”:
document_type
不知道数据来自参数。如果是这样,您确实需要允许接收到什么,或者将参数转换为不安全的哈希。
此外,在尝试获取data = {
"car_documents_attributes" => {
"1562523330183" => { "id" => "", "filename" => "tyYYqHeqSFOnqLHEz5lO_rc_tispor12756_6wldwu.pdf", "document_type" => "contract"},
"1562523353208" => { "id" => "", "filename" => "a9P8TyECRiKbI2YdRVZy_rc_tispor12756_bbtzdz.pdf", "document_type" => "request" },
"1562523353496" => { "id" => "", "filename" => "WCM5FHOfSw6yNSUrfPPm_rc_tispor12756_dqu9r2.pdf", "document_type" => "notes" }
}
}
p data['car_documents_attributes'].any? { |_, doc| doc['document_type'] == 'contract' }
# true
时,您可以尝试使用fetch
而不是[]
,因为如果该密钥不在car_documents_attributes
中,它将抛出{{ 1}},这将引发NoMethodError:
data