Недавно я столкнулся с ошибкой, когда добавил в свой файл environment.rb следующее:
class Array
def sum
self.inject{|sum,x| sum + x }
end
end
Предполагаемый метод, который позволяет мне выполнять array.sum, работает отлично, но он имеетвызвала странную ошибку, когда я пытаюсь получить доступ к объектам через данные отношения has_many
, например:
class Device < ActiveRecord::Base
attr_accessible :name, :device_abilities, :abilities
has_many :device_abilities, :dependent => :destroy
has_many :abilities, :through => :device_abilities, :dependent => :destroy
end
class Ability < ActiveRecord::Base
attr_accessible :name, :device_abilities, :devices
has_many :device_abilities, :dependent => :destroy
has_many :devices, :through => :device_abilities, :dependent => :destroy
end
class DeviceAbility < ActiveRecord::Base
attr_accessible :device_id, :ability_id
belongs_to :device
belongs_to :ability
end
Это прекрасно работает без использования метода sum в environment.rb, поэтому я могу сделать @device.abilities
как обычно, но когда метод sum добавлен в environment.rb, я получаю следующую ошибку при попытке сделать @device.abilities
:
undefined method `zero?' for nil:NilClass
Может кто-нибудь подсказать, почему это происходит, и как я могу работатьвокруг него?Я знаю, что могу суммировать каждый массив вручную, но это не похоже на рельсы.
Спасибо!