У меня есть модель roles в приложении rails, в которой я написал несколько быстрых методов класса. Эти методы, по сути, являются просто удобными оболочками для некоторых часто используемых средств поиска. Но это представляет серьезную проблему. Если я попытаюсь загрузить схему этого приложения на другой компьютер с чистой базой данных, произойдет сбой. Это связано с тем, что задача db:schema:load rake сначала загружает всю среду rails, таким образом загружая методы моего класса, которые ищут запись в базе данных, которая, конечно, еще не существует.
Итак две проблемы:
- Я не знаю, понимаю ли я, почему он запускает метод при загрузке.
- Я не знаю, как это обойти, если я не спасу ошибки для каждого метода.
Есть ли способ «рельсы» или «рубин», который мне не хватает?
Вот мой пример кода:
Class Role < ActiveRecord::Base
def self.admin
find_by_name "Administrator"
end
def self.user
find_by_name "User"
end
def self.moderator
find_by_name "Moderator"
end
end
И тот же код вкратце: https://gist.github.com/836501
Спасибо за любую помощь.
ОБНОВЛЕНИЕ:
Оказалось, что я забыл поместить вызовы этих методов класса из моих фабрик в сторону блока.
Итак, это:
Factory.define :admin, :parent => :user do |f|
f.roles [Role.admin]
end
Должно быть так:
Factory.define :admin, :parent => :user do |f|
f.roles {[Role.admin]}
end