小编ben*_*vds的帖子

Rails:如何扩展gem的ActiveRecord子类?

我在扩展一个在gem中定义的类并且是ActiveRecord :: Base的子类时遇到了问题.

我唯一想扩展这个类的是: has_many :promos

然而,扩展倾向于排除原始类.我得到的错误:

PGError: ERROR:  relation "sites" does not exist
LINE 4:              WHERE a.attrelid = '"sites"'::regclass
                                        ^
:             SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
              FROM pg_attribute a LEFT JOIN pg_attrdef d
                ON a.attrelid = d.adrelid AND a.attnum = d.adnum
             WHERE a.attrelid = '"sites"'::regclass
               AND a.attnum > 0 AND NOT a.attisdropped
             ORDER BY a.attnum
Run Code Online (Sandbox Code Playgroud)

检查控制台中的类给出:

Cms::Site(Table doesn't exist)
Run Code Online (Sandbox Code Playgroud)

原始类有这个方法,可能不再被调用:

set_table_name :cms_sites
Run Code Online (Sandbox Code Playgroud)

顺便说一句.我正在尝试从comfortable_mexican_sofa插件扩展Site类.

这是应该扩展类的文件:

# lib/comfortable_media_sofa/comfortable_media_sofa.rb
require 'comfortable_mexican_sofa'

module Cms
  class Site < ActiveRecord::Base
    has_many :promos
  end
end …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

8
推荐指数
1
解决办法
1900
查看次数

标签 统计

ruby ×1

ruby-on-rails ×1