index and polymorphic
http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
class CreateStars < ActiveRecord::Migration
def self.up
create_table :cms_tv_stars do |t|
t.string :username
t.string :image
t.integer :person_id t.timestamps
end change_table :cms_tv_stars do |t|
t.index :person_id, uniq: true
end
end def self.down
drop_table :cms_tv_stars
end
end
class CreateSubchannelItems < ActiveRecord::Migration
def self.up
create_table :tv_subchannel_items do |t|
t.string :title
t.string :subtitle
t.string :version
t.string :image
t.references :subchannel
t.references :showable, polymorphic: true
t.integer :state, limit: 1, default: 0
t.integer :position, default: 1 t.timestamps
end change_table :tv_subchannel_items do |t|
t.index [:showable_type, :showable_id], name: :subchannel_items_showable_index
t.index [:subchannel_id, :state, :version, :position], name: :subchannel_items_sort_index
end
end def self.down
drop_table :tv_subchannel_items
end
end
http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
If you have an instance of the Picture model, you can get to its parent via @picture.imageable.
To make this work, you need to declare both a foreign key column and a type column in the model that declares the polymorphic interface:
class CreatePictures < ActiveRecord::Migration
def change
create_table :pictures do |t|
t.string :name
t.integer :imageable_id
t.string :imageable_type
t.timestamps null: false
end add_index :pictures, :imageable_id
end
end
This migration can be simplified by using the t.references form:
class CreatePictures < ActiveRecord::Migration
def change
create_table :pictures do |t|
t.string :name
t.references :imageable, polymorphic: true, index: true
t.timestamps null: false
end
end
end
Let's check the index in the database
$ bundle exec rails db -p
mysql> show index from tv_subchannel_items;
+---------------------+------------+---------------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+---------------------+------------+---------------------------------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| tv_subchannel_items | 0 | PRIMARY | 1 | id | A | 0 | NULL | NULL | | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_showable_index | 1 | showable_type | A | 0 | NULL | NULL | YES | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_showable_index | 2 | showable_id | A | 0 | NULL | NULL | YES | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_sort_index | 1 | subchannel_id | A | 0 | NULL | NULL | YES | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_sort_index | 2 | state | A | 0 | NULL | NULL | YES | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_sort_index | 3 | version | A | 0 | NULL | NULL | YES | BTREE | | |
| tv_subchannel_items | 1 | subchannel_items_sort_index | 4 | position | A | 0 | NULL | NULL | YES | BTREE | | |
+---------------------+------------+---------------------------------+--------------+---------------+-----------+-------------+----------+-----
index and polymorphic的更多相关文章
- Rails5 Model Document
创建: 2017/06/09 更新: 2017/06/21 更新: 2017/06/23 对待未完成的追加# TODO: 更新: 2017/06/29 修正文件名db/seed.rb ---> ...
- MySQL 优化之 ICP (index condition pushdown:索引条件下推)
ICP技术是在MySQL5.6中引入的一种索引优化技术.它能减少在使用 二级索引 过滤where条件时的回表次数 和 减少MySQL server层和引擎层的交互次数.在索引组织表中,使用二级索引进行 ...
- 在v-for中利用index来对第一项添加class(vue2.0)
<li v-for="(el,index) in event" v-bind:class="{ 'm-swipe-active': !index}"> ...
- Ubuntu-server 下Apache2 配置.htaccess 隐藏thinkPHP项目index.php
需要开启Apache2的rewrite模块 1.打开/etc/apache2/apache2.conf 将文件中的AllowOverride None改为AllowOverride All 2.修改m ...
- SQL Server-聚焦强制索引查询条件和Columnstore Index(九)
前言 本节我们再来穿插讲讲索引知识,后续再讲数据类型中的日期类型,简短的内容,深入的理解,Always to review the basics. 强制索引查询条件 前面我们也讲了一点强制索引查询的知 ...
- directx12中vetex buffer、index buffer和constant buffer绑定piple line的时机
类别 时机 函数 建Heap vetex buffer 在Draw函数中 ID3D12GraphicsCommandList::IASetVertexBuffer 否 index buffer 在Dr ...
- URL_MODEL 2 不能访问 在APACHE服务器上的访问方式上去除index.php
thinkphp URL_MODEL=2,访问链接http://i.cnblogs.com/Online/index.html 报错: Not Found The requested URL /on ...
- index+match函数在压实度中对盒号盒质量随机不重复的最佳使用
首先按照升序排列好盒号和盒质量,使其一一对应, 盒号 盒重量 随机值rand() 随机值大小排列rank 1 2001 0.01 ...
- [LeetCode] Random Pick Index 随机拾取序列
Given an array of integers with possible duplicates, randomly output the index of a given target num ...
随机推荐
- 第一章 OO大智慧
今天,正式开始读王涛写的<你必须知道的.NET(第二版)>,刚开始读了序,觉得写的相当精彩,就被吸引住了.看了一会发现本书的特点可能就是以例举例,形象生动,比较期待的样子.虽然前面讲的概念 ...
- Android--下拉框
一. 实现效果图如下 Android 中的下拉框为Spinner 组件,其效果图如上图片 二. 实现代码 布局代码如下 <?xml version="1.0" encodin ...
- 正确对待bug
正确对待bug 2016-10-09 公众号:一只程序媛 以前我一直以为bug是代码的天敌,我以为好的程序媛写出来的代码是应该没有bug的,零bug是终极奋斗目标. 后来,看到一句话"上帝创 ...
- 简单的3个SQL视图搞定所有SqlServer数据库字典
网上有很多SQL SERVER数据库字典的SQL语句,七零八落,我在工作整理了一下思路,总结SQL代码如下.数据库字典包括表结构(分2K和2005).索引和主键.外键.约束.视图.函数.存储过程.触发 ...
- 使用jquery获取url及url参数的方法及定义JQuery扩展方法
1.jquery获取url很简单,代码如下: window.location.href; 其实只是用到了javascript的基础的window对象,并没有用jquery的知识. 2.jquery获取 ...
- javascript-XMLHttpRequest
JS方法: var xmlhttp;//一定注意是写在外面的全局变量,我调了一个上午才发现. function verify(){ //使用dom方式获取文本框中的值 var userName=doc ...
- Linux_日志信息
一.httpd日志:/var/log/httpd1.软件位置:whereis httpd2.配置文件位置:/etc/httpd/conf/httpd.conf 二.mysql日志:/var/log 查 ...
- BZOJ-1087 互不侵犯King 状压DP+DFS预处理
1087: [SCOI2005]互不侵犯King Time Limit: 10 Sec Memory Limit: 162 MB Submit: 2337 Solved: 1366 [Submit][ ...
- bzoj1670 Usaco2006 Building the Moat护城河的挖掘 [凸包模板题]
Description 为了防止口渴的食蚁兽进入他的农场,Farmer John决定在他的农场周围挖一条护城河.农场里一共有N(8<=N<=5,000)股泉水,并且,护城河总是笔直地连接在 ...
- Java JDBC下执行SQL的不同方式、参数化预编译防御
相关学习资料 http://zh.wikipedia.org/wiki/Java数据库连接 http://lavasoft.blog.51cto.com/62575/20588 http://blog ...