2014-08-29 65 views
1

我們使用數據庫資源表來提供出現在應用程序組合框中的值。每個資源表都有一個display_name列和一個service_name列。顯示名稱是用戶看到的,服務名稱被髮送到Web服務。我們的一些字段是可選的,我添加了一個is_default列。我想創建一個返回默認服務名稱的抽象類。這是我的第一個努力。然而,當CondenserPumpControlType.default_service_name方法被調用我得到:如何在ActiveRecord抽象類中調用Where方法?

異常消息:未定義的方法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)。首先 – 2014-08-29 19:16:45