【问题标题】:How do you call the where method in an ActiveRecord abstract class?如何调用 ActiveRecord 抽象类中的 where 方法?
【发布时间】: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: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

【问题讨论】:

    标签: ruby activerecord ruby-on-rails-3.2 abstract-class


    【解决方案1】:
    self.class.where(is_default: 1).first 
    

    应该是

    self.where(is_default: 1).first
    

    【讨论】:

    • 原来也可以是:where(is_default: 1).first
    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2017-05-02
    • 2023-03-07
    • 1970-01-01
    • 2014-03-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多