2014-08-29 3 views
1

Мы используем таблицы ресурсов базы данных, чтобы предоставить значения, которые отображаются в поле со списком наших приложений. Каждая таблица ресурсов имеет столбец display_name и столбец service_name. Отображаемое имя - это то, что видит пользователь, и имя службы отправляется в веб-службу. Некоторые из наших полей являются необязательными, и я добавил столбец is_default. Я хотел бы создать абстрактный класс, который возвращает имя службы по умолчанию. Вот мое первое усилие. Однако, когда вызывается метод CondenserPumpControlType.default_service_name я получаю:Как вы называете метод where в абстрактном классе ActiveRecord?

Сообщения об исключении: не определен метод 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 

ответ

2
self.class.where(is_default: 1).first 

должен быть

self.where(is_default: 1).first 
+0

Оказывается, это также может быть: где (is_default: 1) .first –