У меня есть модель role в приложении 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
Спасибо за любую помощь.
UPDATE:
Оказалось, что я забыл разместить вызовы этих методов класса с моих фабрик в стороне от блока.
Так вот:
Factory.define :admin, :parent => :user do |f|
f.roles [Role.admin]
end
Нужно быть таким:
Factory.define :admin, :parent => :user do |f|
f.roles {[Role.admin]}
end