如何循环通过rails模型参数

时间:2013-02-21 21:56:09

标签: ruby-on-rails ruby ruby-on-rails-3

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

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

我知道如何在ruby中执行此操作:

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)

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

干杯!

2 个答案:

答案 0 :(得分:4)

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

u.attributes.select {|_,v| v.nil? }.keys

答案 1 :(得分: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