ActiveRecord元编程在宝石中

时间:2014-03-07 16:01:49

标签: ruby-on-rails activerecord gem

所以我必须在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完成设置之前还有其他方法可以推迟吗?

0 个答案:

没有答案