我需要使用静态数据和查询返回的数据创建一个哈希,并且不想再调用两次。
例如:
network = {type: "manager", name: Profile.where(id: x.user_id).pluck(:name), email: Profile.where(id: x.user_id).pluck(:email) }
上面的一行有效,但我试着只用一次这样的调用:
network = {type: "manager", (name:, email:) : Profile.where(id: x.user_id).pluck(:name, :email).flatten } # don't work
期望的输出:
profile #=> {:type=>"manager", :name=>"Ruby", :email =>"ruby@blahblahblah.com"}
有什么想法吗?
答案 0 :(得分:2)
现在我理解你的问题。
你可以做到
network = { type: "manager" }
network.merge Hash[[:name, :email].zip Profile.where(id: x.user_id).pluck(:name, :email).flatten]
答案 1 :(得分:1)
只需将包含姓名和电子邮件的个人资料保存到变量中:
profile = Profile.select(:name, :email).where(id: x.user_id).first
然后将值添加到哈希:
network = {type: "manager", name: profile.name, email: profile.email }