在模型中的哈希内部创建if语句

时间:2009-05-21 11:53:49

标签: ruby-on-rails

我试图显示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}

2 个答案:

答案 0 :(得分:1)

假设.stand.street_no等有效,即使.standfalse(因为 可能<{1}}仍然有效,如果false部分为真),然后以下内容将起作用:

r.user_id == r.id

说明:

  1. 遍历每个驻留对象并构建一个包含我们知道将使用的值的哈希。
  2. 如果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!
  3. 返回哈希。
  4. 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