我有一张在使用之前必须组装的地图...
mailList = Customers.map do |customer|
{
:username => customer.name,
:email => customer.email,
:last_ip_v4 => customer.ipv4,
:last_ip_v6 => customer.ipv6
}
end
这适用于许多测试用户,但并非所有用户都具有最后一个ipv4和最后一个ipv6。如果不这样做,ruby会出错,但是我宁愿它只分配nil。我该怎么办?
答案 0 :(得分:2)
即使ipv4和ipv6为nil,也不应引发错误。我认为这里的语法不正确,或者Customers
为nil。尝试这种方式:
mailList = Customer.all.map do |customer|
{
username: customer.name,
email: customer.email,
last_ip_v4: customer.ipv4,
last_ip_v6: customer.ipv6
}
end
答案 1 :(得分:1)
如果您确定这一行,
mailList = Customers.map do |customer|
可以正常工作(可能是在使用错误约定的情况下),然后尝试检查ipv4和ipv6的零例,并将列表构造为,
mailList = construct_list Customers
def construct_list data
list = []
hash ={}
data.map do |customer|
hash[:username] = customer.name
hash[:email] = customer.email
customer.ipv4.nil? ? hash[:last_ip_v4] = nil : hash[:last_ip_v4] = customer.ipv4
customer.ipv6.nil? ? hash[:last_ip_v6] = nil : hash[:last_ip_v6] = customer.ipv6
list << hash
end
list
end
尽管它可能不是最佳选择,但它会帮助您一段时间。