I want to create a hash from data which are pulled out from db. The hash should looks like
hash { id: process.id,
name: company_name }
To get company_name I have to do some query which returns an array of strings with company names:
Process.all.map do |process|
process.inquiry_field_responses
.joins(:inquiry_field)
.where(inquiry_fields: { name: 'company_name' })
.first&.value
end
To create this hash I thought all I should do is something like:
fetcher = []
Process.all.map do |process|
company_name = process.inquiry_field_responses
.joins(:inquiry_field)
.where(inquiry_fields: { name: 'company_name' })
.first&.value
if company_name != nil
fetcher << {
id: process.id,
name: company_name,
}
end
end
But in the result I've:
2.6.0 :318 > fetcher
=> [{:id=>1, :name=>nil}, {:id=>2, :name=>nil}, {:id=>3, :name=>nil},
{:id=>4, :name=>nil}, {:id=>5, :name=>nil}, {:id=>6, :name=>nil}, {:id=>7,
:name=>nil}, {:id=>8, :name=>nil}, {:id=>9, :name=>nil}, {:id=>10,
:name=>nil}, {:id=>11, :name=>nil}, {:id=>12, :name=>nil}, {:id=>13,
:name=>nil}, {:id=>14, :name=>nil}, {:id=>15, :name=>nil}, {:id=>16,
:name=>nil}, {:id=>17, :name=>nil}, {:id=>18, :name=>nil}, {:id=>19,
:name=>nil}, {:id=>20, :name=>nil}, {:id=>21, :name=>nil}, {:id=>22,
:name=>nil}, {:id=>23, :name=>nil}, {:id=>24, :name=>nil}, {:id=>25,
:name=>nil}, {:id=>26, :name=>nil}, {:id=>27, :name=>nil}, {:id=>28,
:name=>nil}, {:id=>29, :name=>nil}, {:id=>30, :name=>nil}, {:id=>31,
:name=>nil}, {:id=>32, :name=>nil}, {:id=>33, :name=>nil}, {:id=>34,
:name=>nil}, {:id=>35, :name=>nil}, {:id=>36, :name=>nil}, {:id=>37,
:name=>nil}, {:id=>38, :name=>nil}, {:id=>39, :name=>nil}, {:id=>40,
:name=>nil}, {:id=>41, :name=>nil}, {:id=>42, :name=>nil}, {:id=>43,
:name=>nil}, {:id=>44, :name=>nil}, {:id=>45, :name=>nil}, {:id=>46,
:name=>nil}, {:id=>47, :name=>nil}, {:id=>48, :name=>nil}, {:id=>49,
:name=>nil}, {:id=>50, :name=>nil}, {:id=>51, :name=>"231421AAAAA firma"},
{:id=>52, :name=>"tregfsd"}, {:id=>53, :name=>"aaaaa"}, {:id=>54,
:name=>"zzzzzz"}, {:id=>55, :name=>"bbbbb"},
Instead of:
2.6.0 :318 > fetcher
{:id=>52, :name=>"tregfsd"}, {:id=>53, :name=>"aaaaa"}, {:id=>54,
:name=>"zzzzzz"}, {:id=>55, :name=>"bbbbb"},
if company_name.present?will check also check ifcompany_namemight be an empty stringid: 1, name: nilI've got an array with nil values at the front and then hashes with some data -=> [nil, nil, nil, nil, nil, nil, [{:id=>52, :name=>"tregfsd"}, {:id=>53, :name=>"aaaaa"}]]