【发布时间】:2018-02-27 14:11:42
【问题描述】:
我尝试创建一个模块来根据多个模型上的实体字段来管理访问。 我的实体字段的名称取决于调用它的当前模型的架构。
我的模块是:
module Modules::EntityManagement
extend ActiveSupport::Concern
def entity_field_name
self.class.connection.schema_search_path.split(",").first == 'public' ? 'entity_id' : 'entity_id__c'
end
included do
scope :myscope, lambda {
where('WHERE ? = ?', self.entity_field_name, 1)
}
end
end
当我在任何模型上调用它时
Mymodel.myscope
返回错误
undefined method `entity_field_name' for #<Class:0x007ff62da60150>
我尝试了很多不同的语法,但没有任何效果。
如何在模块范围内使用基于数据库架构的动态字段名称?
【问题讨论】:
标签: ruby-on-rails ruby activerecord scope rails-activerecord