1

私はいつもこのエラーを受けています

#<NoMethodError: undefined method `hours' for "1":String>

更新:「1」だけでなく、任意の数字でエラーが発生します

ここに私が時間を返すコードがあります。私はこの方法を使用しています

def check_hours(most_recent_snooze)
    if most_recent_snooze.duration.nil?
      return 0.hours
    else
      return most_recent_snooze.duration.hours
    end
  end

これらのコードは check_hours(most_recent_snooze) メソッドを使用します

def snoozing?
    if most_recent_snooze = Snooze.find_by_sensor_id(self.id)
      if most_recent_snooze && !(most_recent_snooze.created_at + check_hours(most_recent_snooze) < Time.now)
        # snooze is active
        return true
      else
        most_recent_snooze.destroy
        return false
      end
    end
    return false
    #self.snoozes.active.present? ? true : false
  end

  def snooze_minutes_remaining
    # (60 - (Time.now - self.snoozes.last.created_at)/60).to_i + 1
    most_recent_snooze = Snooze.find_by_sensor_id(self.id)
    distance_of_time_in_words(Time.now, most_recent_snooze.created_at + check_hours(most_recent_snooze)) if most_recent_snooze
  end

このコードのどこが間違っていたのか教えてください。

更新: schema.rb 内では、期間は整数です

create_table "snoozes", :force => true do |t|
.......
........
.........
t.integer "duration"
end

4

2 に答える 2