1

パラメータにnil値がある場合、パラメータの名前が返されるように、レールでメソッドを設定しようとしています。

私は使用法(ガス、電気、バイオマス)と呼ばれるモデルを持っています

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)

「バイオマス」を返すにはどうすればいいですか??

乾杯!

4

2 に答える 2

4

attributesクラスにリンクされたデータベース テーブルに基づく ActiveRecord モデルのハッシュがあります。空のフィールドは 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 に答える