【发布时间】:2014-10-23 14:39:42
【问题描述】:
我们使用数据库资源表来提供出现在应用程序组合框中的值。每个资源表都有一个 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:indefault_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
【问题讨论】:
标签: ruby activerecord ruby-on-rails-3.2 abstract-class