我试图显示pdf上的所有居民及其家属,但是家属没有看台,他们是由居民的外键user_id识别的。例如resident1.id = 5 --- dependent3.user_id = 5 mean dependent3属于resident1,因此,如果我想显示依赖的立场,我该怎么办,我想显示所有居民及其家属和展台信息因为受抚养人是受抚养人所属居民的立场信息。现在我的信息应该在哈希中,因此它可以生成我的pdf文件..
我的代码是
data = [] c = 1 居民。做| r | 数据<< {“Fullname”=> r.firstname,“姓氏”=> r.lastname,“Street-Number”=> r.stand.street_no,“street Name”=> r.stand.streetname}如果r.stand || r.user_id = r.id 端
记住我的家属和居民在同一张桌子上,但居民没有user_id foreigh key,只有受抚养者拥有它。
我的输出只显示有不属于家属的居民的信息。
请任何愿意帮助的人。因为我不知道我是否可以在哈希中使用if语句,如:居民。做| r | 数据<< {“Fullname”=> r.firstname,“姓氏”=> r.lastname}如果r.stand || r.user_id = r.id {“Street-Number”=> r.stand.street_no,“street Name”=> r.stand.streetname}
答案 0 :(得分:1)
假设.stand.street_no
等有效,即使.stand
为false
(因为 可能<{1}}仍然有效,如果false
部分为真),然后以下内容将起作用:
r.user_id == r.id
说明:
data = residents.map do |r|
hash = { "Fullname" => r.firstname, "Lastname" => r.lastname }
hash.merge!({ "Street-Number" => r.stand.street_no, "street Name" => r.stand.streetname}) if r.stand || r.user_id == r.id
hash
end
子句为真,则在附加键中有条件merge!
。在if
中执行此操作,无需预先声明map
数组,也无需在每次循环中推送哈希值。
答案 1 :(得分:0)
data = []
residents.each do |r|
tmp_hash = {"Fullname" => r.firstname, "Lastname" => r.lastname}
if r.stand || r.user_id = r.id
tmp_hash.merge({"Street-Number" => r.stand.street_no, "street Name" => r.stand.streetname})
end
data << tmp_hash
end