我在 Rails 应用程序中有一个角色模型,我在其中编写了一些快速快捷方式类方法。这些方法本质上只是一些常用查找器的便利包装器。但这提出了一个严重的问题。如果我尝试在另一台具有干净数据库的计算机上加载该应用程序的架构,那么它将失败。这是因为 db:schema:load rake 任务首先加载整个 rails 环境,因此加载了我的类方法,这些方法正在数据库中寻找当然还不存在的记录。
所以有两个问题:
- 我不知道我理解为什么它在加载时运行该方法。
- 除非我为每种方法挽救错误,否则我不知道任何解决方法。
我是否缺少“rails”或“ruby”方式?
这是我的示例代码:
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