1

我正在尝试在 rails 中设置一个方法,以便如果有一个参数具有 nil 值,则返回参数的名称。

我有一个名为 Usages(gas,elec,biomass) 的模型

我知道如何在红宝石中做到这一点:

u = {elec: 100, gas: 200, biomass: nil}
t = %w(gas elec chp)
t.each do |t|
    s=t.to_sym
    if u[s] == nil
        puts "#{t}"
    end
end

,返回“生物质”

假设我在 Rails 中有这个:

u = Usage.create(elec:100, gas:200)

我将如何返回“生物质”?

干杯!

4

2 回答 2

4

ActiveRecord 模型上有一个attributes散列,它基于链接到该类的数据库表。空字段映射为 nil 值,因此您可以像这样查找它们:

u.attributes.select {|_,v| v.nil? }.keys
于 2013-02-21T22:13:11.733 回答
1

我想你只是想循环通过活动记录attributes

u = Usage.create(elec:100, gas:200)
u.attributes.each do |x|
  if u.public_send(x).nil?
    puts "#{x} is nil"
  end
end
于 2013-02-21T22:13:10.363 回答