社区首页 >问答首页 >rails模型继承中的“ActiveRecord::StatementIn有效:未能找到表”

rails模型继承中的“ActiveRecord::StatementIn有效:未能找到表”
EN

Stack Overflow用户
提问于 2016-06-16 16:35:20
回答 1查看 1.4K关注 0票数 0

当我跑的时候

代码语言:javascript
代码运行次数:0
复制
irb(main):003:0> House.new(name: "A house")

我知道错误了

代码语言:javascript
代码运行次数:0
复制
ActiveRecord::StatementInvalid: Could not find table 'houses'
    from /home/overflow012/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.rc1/lib/active_record/connection_adapters/sqlite3_adapter.rb:429:in `table_structure'
...

你可以看到下面我的代码

property.rb

代码语言:javascript
代码运行次数:0
复制
class Property < ApplicationRecord
    self.abstract_class = true
end

apartment.rb

代码语言:javascript
代码运行次数:0
复制
class Apartment < Property
end

house.rb

代码语言:javascript
代码运行次数:0
复制
class House < Property
end

db/migrate/20160616022800_create_properties.rb

代码语言:javascript
代码运行次数:0
复制
class CreateProperties < ActiveRecord::Migration[5.0]
  def change
    create_table :properties do |t|
      t.string :name
      t.string :detail
      t.float :price
      t.string :type
      t.timestamps
    end
  end
end

属性表是通过rake db:migrate创建的。

注意事项:我使用rails 5.0.0.rc1

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-06-16 17:50:46

我相信您需要从您的self.abstract_class模型中删除Property行。

abstract_class添加到模型将迫使子类绕过父类Property的隐含STI表命名。本质上,我们是说Property不能再被实例化了,并且没有数据库表的支持。

因此,Property的子类不会查找表名的父类,它们将根据自己的类名查找表。

或者,您可以在您的self.table_name = 'properties'模型中设置Property,这应该是可行的。然而,这违背了定义abstract_class的目的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37871408

复制
相关文章
ActiveRecord 模型验证
比如:file 验证图片 图片可以为空、类型只能是jpg、png或者gif,最大10M等
友儿
2022/09/11
3860
Yii2 ActiveRecord 模型
在查询、更新、删除的时候,都是用find()方法创建对象。 为了更好地理解save()方法,我们查看一下vendor\yiisoft\yyiw\db\BaseActiveRecord.php代码
友儿
2022/09/11
1.6K0
Rails MVC 和 CRUD(8)
再次提交一回 ---- 创建模型 Rails 提供了一个生成器用来创建模型 [root@h202 blog]# bin/rails generate model Article title:string text:text Running via Spring preloader in process 13216 invoke active_record create db/migrate/20160422140912_create_articles.rb c
franket
2021/11/25
2570
ActiveRecord
MybatisPlus支持ActiveRecord形式调用,实体类只需继承Model类即可进行强大的CRUD操作
阿超
2022/08/17
2260
ActiveRecord
Rust Web 生态观察| SeaORM :要做 Rust 版本的 ActiveRecord
有些人说用 Rust 进行 Web 开发 是杀鸡用牛刀,这种观点其实是对「系统级语言」的刻板印象造成的。无论从性能、工程架构还是开发效率,Rust 其实都很出色,目前就是需要一套比较成熟的框架。无论如何,Rust 在 Web 开发领域的生态在逐步成型。
张汉东
2021/10/13
10.3K0
【多态】【虚表指针与虚表】【多继承中的多态】
前言 👹 该内容中的代码以及解释都是在vs2022下的x86环境中,涉及的指针都是4个字节,如果要在其他的平台下运行,部分代码需要改动。 Ⅰ. 多态的概念 通俗来说,就是不同的类型对象,去完成同一件事情的时候会产生不一样的状态。 多态分为静态多态和动态多态: 静态多态 是在编译时的,体现就是函数重载。 int i = 0, j = 1; double a = 1.1, b = 2.2; swap(i, j); swap(a, b); 动态多态是在程序 运行时 的,根据不同的对象调用不同的函数完成不同的行为(
利刃大大
2023/04/12
1.2K0
【多态】【虚表指针与虚表】【多继承中的多态】
【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )
上述 继承 的过程中 , 每一层继承 , 都继承了上一级 父类的 成员变量 , 同时自己也定义了新的成员变量 ;
韩曙亮
2023/10/23
2450
【C++】继承 ⑦ ( 继承中的对象模型分析 | 继承中的构造函数和析构函数 )
如何从 MongoDB 迁移到 MySQL
最近的一个多月时间其实都在做数据库的迁移工作,我目前在开发的项目其实在上古时代是使用 MySQL 作为主要数据库的,后来由于一些业务上的原因从 MySQL 迁移到了 MongoDB,使用了几个月的时间后,由于数据库服务非常不稳定,再加上无人看管,同时 MongoDB 本身就是无 Schema 的数据库,最后导致数据库的脏数据问题非常严重。目前团队的成员没有较为丰富的 Rails 开发经验,所以还是希望使用 ActiveRecord 加上 Migration 的方式对数据进行一些强限制,保证数据库中数据的合法。
哲洛不闹
2018/10/18
5.4K0
如何从 MongoDB 迁移到 MySQL
C++继承中的对象模型与继承中构造和析构顺序
然后输入: cl /d1 reportSingleClassLayout查看的类名 所属文件名
CtrlX
2022/09/22
5800
C++继承中的对象模型与继承中构造和析构顺序
【Ruby on Rails】Model中关于保存之前的原值和修改状态
今天在Rails的Model中遇到了一个问题—— 当我从Model类中获取了一个ActiveRecord对象,对其进行了一系列修改(尚未保存),我该如何确定究竟哪些修改了呢? (设Model为Option,相关的的参数为correct) 我本来采取的方法是——在数据表中新增一个ori_correct参数,每次对象保存之前都和correct做到同步,这样一来,是不是correct字段发生了修改也就得以判断了。 但是这样的缺点也显而易见——如果以后参数个数很多的话,岂不是得每一个都得来一个相应的ori_字段?这
HansBug
2018/04/11
1.7K0
模型继承
一、继承普通模型类 实现 <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">Animal</span><span class="hljs-params">(models.Model)</span>:</span> name = models.CharField(max_length=<span class="hljs-number">20</span>) age
星哥玩云
2022/09/08
1570
Mybatis-Plus的ActiveRecord
        Active Record(活动记录),是一种领域模型模式,特点是一个模型类对应关系型数据库中的一个表,而模型类的一个实例对应表中的一行记录。         ActiveRecord 一直广受动态语言( PHP 、 Ruby 等)的喜爱,而 Java 作为准静态语言, 对于 ActiveRecord 往往只能感叹其优雅,所以 MP 也在 AR 道路上进行了一定的探索
别团等shy哥发育
2023/02/25
4600
Mybatis-Plus的ActiveRecord
Rails 构建评论功能(2)
添加删除模型 rails 命令可以方便的添加删除模型 [root@h202 blog]# rails --help Usage: rails COMMAND [ARGS] The most common rails commands are: generate Generate new code (short-cut alias: "g") console Start the Rails console (short-cut alias: "c") server Start
franket
2021/10/20
3700
Import-Module ServerManager Import-Module : 未能加载指定的模块“ServerManager”,因为在任何模块目录中都没有找到有效模块文件..
C:\Windows\System32\WindowsPowerShell\v1.0\Modules 下有ServerManager的东东,可是还是找不到。
NaughtyCat
2020/10/09
3.6K0
Rails 构建评论功能(3)
评论在创表的过程中已经构建了与article 的关联,但是article并没与评论关联
franket
2021/10/20
8280
分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战
如果您正在构建软件即服务 (SaaS) 应用程序,您可能已经在数据模型中内置了租赁的概念。通常,大多数信息与租户/客户/帐户相关,并且数据库表捕获这种自然关系。
为少
2022/03/31
3.9K0
分布式 PostgreSQL 集群(Citus)官方示例 - 多租户应用程序实战
LeetCode 448. 找到所有数组中消失的数字(哈希表)
给定一个范围在  1 ≤ a[i] ≤ n ( n = 数组大小 ) 的 整型数组,数组中的元素一些出现了两次,另一些只出现一次。
SakuraTears
2022/01/13
6080
less中的继承
经过上一篇 less中的层级结构 的讲解之后,本章节开展的内容为 less 中的继承,还是一样的老套路来引出 less 中的继承,先来看一段代码如下
程序员 NEO
2023/09/29
2250
less中的继承
js中的继承
特点:实例可继承的属性有:实例的构造函数的属性,父类构造函数属性,父类原型的属性。(新实例不会继承父类实例的属性!) 缺点:新实例无法向父类构造函数传参
用户10562852
2023/06/04
1.1K0
js中的继承
Rails 7 中引入 Bootstrap 5
在 Rails 6 中有两种不同的工具可以用来管理前端的 CSS、JavaScript 以及 images 等资源,分别是 “Sprockets” 和 “Webpacker”,“Sprockets” 除了 Rails 应用外很少使用,但是 “Webpacker” 不仅在 Rails 中,在其他应用框架中也被广泛的使用。
RiemannHypothesis
2023/02/20
3.1K0
Rails 7 中引入 Bootstrap 5

相似问题

ActiveRecord::StatementIn有效值(无法找到表)

112

ActiveRecord::StatementIn有效值:无法找到表‘用户’Rails 5教程

12

Rails: ActiveRecord::StatementIn有效值

36

Rails: ActiveRecord::StatementIn有效值不能强制转换ActiveRecord::StatementIn有效值

24

Rails 3 ActiveRecord迁移-ActiveRecord::StatementIn有效值

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档