我们使用数据库资源表来提供应用程序组合框中显示的值。每个资源表都有一个display_name列和一个service_name列。显示名称是用户看到的内容,服务名称将发送到Web服务。我们的一些字段是可选的,我添加了一个is_default列。我想创建一个返回默认服务名称的抽象类。这是我的第一次努力。但是,当调用CondenserPumpControlType.default_service_name方法时,我得到:
异常消息:未定义的方法
where' for Class:Class Stack trace: ["/apps/ar2/app/models/defaultable_record.rb:5:in
default_service_name'“
我希望抽象类调用CondenserPumpControlType.where,而不是它似乎调用Class.where。我究竟做错了什么。我似乎找不到关于ActiveRecord抽象类的大量文档。
class DefaultableRecord < ActiveRecord::Base
self.abstract_class = true
def self.default_service_name
default_value = self.class.where(is_default: 1).first
default_value.service_name
end
end
class CondenserPumpControlType < DefaultableRecord
attr_accessible :display_name, :service_name, :sort_order, :is_default
end
答案 0 :(得分:2)
self.class.where(is_default: 1).first
应该是
self.where(is_default: 1).first