[ROR] rails migration 中继承 ActiveRecord::Migration[5.1] 带版本号实现原理
来源:互联网 发布:己知直径求周长 编辑:程序博客网 时间:2024/06/10 07:23
在Rilas5 以后
migration文件中的一般继承都会带有版本号,初看是正常的,可是如果自己写的话就会报错,这种写法本身Ruby是不支持的
譬如:
class A[5.1]
end
这种写法本身就是错误的,我是比较迟钝的,也没有反应过来这rails到底是这么实现的 于是我就去看了源码,
源码的实现方式是:
class Current < Migration # :nodoc: end def self.inherited(subclass) # :nodoc: super if subclass.superclass == Migration raise StandardError, "Directly inheriting from ActiveRecord::Migration is not supported. " \ "Please specify the Rails release the migration was written for:\n" \ "\n" \ " class #{subclass} < ActiveRecord::Migration[4.2]" end end def self.[](version) Compatibility.find(version) end def self.current_version ActiveRecord::VERSION::STRING.to_f end看到这段代码的时候真的是 恍然大悟!
只能感慨 Ruby 就是这样一个神奇的语言! 真的 是 Magic
实现带有版本的原理其实真的很简答,
class A def self.[] version self endendclass B < A[5.1]end
其实就是这样的简单!
阅读全文
0 0
- [ROR] rails migration 中继承 ActiveRecord::Migration[5.1] 带版本号实现原理
- rails migration
- rails migration
- ActiveRecord migration的Java实现 -- Timachine
- Migration
- Migration
- Migration
- Migration
- Rails Migration Cheat Sheet
- rails migration tutorial
- Rails之migration总结
- rails 中的迁移Migration
- rails中migration数据库后测试不通过的问题
- rails migration-sql column mapping (rails 3)
- subversion migration
- mybatis-migration
- openstack Migration
- Libvirt migration
- 欢迎使用CSDN-markdown编辑器
- 18.struts2_类型转换,错误消息的显示和定制
- react & Vue.js
- JavaScript 表单验证
- 计蒜客 15500 阿里天池的新任务(简单) 题解
- [ROR] rails migration 中继承 ActiveRecord::Migration[5.1] 带版本号实现原理
- Java Web中常用的分页组件(Java端实现)
- APUE 17章高级IPC——本地转发文件表指针(什么用?)
- shell中十种实现自加的方法
- 搬寝室(HDU-1421)
- 第一次的博客,lnmp为目标,继续努力
- 动态点击修改当前dom元素背景
- JdbcTemplate系列(二)----实战CRUD
- 手工收集ADDM日志