所以我必须在gem中激活记录类:
class Role < ActiveRecord::Base
end
class User < ActiveRecord::Base
Role.all.each do |role|
class_eval <<-CODE
def #{role.name}?
# code to determin presence of role
end
CODE
end
end
这使得各种管理员?用户的样式方法基于实际存在的角色。
但是,这会导致一些问题,因为当gem包含在项目中时,它会在ActiveRecord建立连接之前尝试查询Role,从而导致抛出异常。我可以简单地将元编程移动到初始化器或其他东西,但是必须在每个使用gem的应用程序中重复它。在Rails完成设置之前还有其他方法可以推迟吗?