编写 migration 基础

创建 migration 需要继承自 ActiveRecord::Migration 类,常见如下:

class SomeMigration < ActiveRecord::Migration
  def up
  end

  def down
  end
end

class SomeMigration < ActiveRecord::Migration
  def change
  end
end

一般在 up 方法里面写对数据库进行改动的操作,而在 down 方法里面则是撤销这些操作。写在 change方法里面的操作,ActiveRecord 会识别出这些操作的逆操作,并在执行 migrate 回退的时候进行逆操作。但是并非所有操作都能被识别出来。

时间: 2024-10-03 14:14:59

编写 migration 基础的相关文章

C#编写Unity基础GUI之控件布局

1.GUILayout控件 1 void OnGUI() 2 { 3 GUILayout.Button("这是GUILayout按钮"); 4 } 效果: 会自动调整控件大小,自动定位在屏幕左上角: 2.组视图 1 void OnGUI() 2 { 3 GUI.BeginGroup(new Rect(Screen.width / 2, Screen.height / 2, 500, 500)); 4 5 GUI.Button(new Rect(0,0,100,100),"按钮

C#编写Unity基础GUI之按钮控件

基本方法: public static bool Button(Rect position, GUIContent content); public static bool Button(Rect position, string text); public static bool Button(Rect position, Texture image); public static bool Button(Rect position, GUIContent content, GUIStyle

C#编写Unity基础GUI之动态窗口

1.创建窗口 1 //声明窗口位置大小 2 private Rect pos = new Rect(10,60,120,50); 3 4 //回调函数 5 void Wincallback(int id) 6 { 7 if(GUI.Button(new Rect(10,20,100,20),"窗口内按钮")){ 8 print("按钮在窗口内被单击"); 9 } 10 } 11 12 void OnGUI() 13 { 14 pos = GUI.Window(0,

C#编写Unity基础GUI之按钮控件GUILayout控件

GUILayout布局可以自动排列相关控件,例如: 1 void OnGUI() 2 { 3 GUILayout.Button("这一个GUILayout按钮"); 4 } 效果: 可以将控件的大小自动缩放成适应大小,从屏幕左上角开始排列,例如: 1 void OnGUI() 2 { 3 GUILayout.Button("这是个GUILayout按钮"); 4 GUILayout.Button("这也是个GUILayout按钮"); 5 } 效

C#编写Unity基础GUI之控件-2

1.文本输入框 1 public string text; 2 3 void OnGUI(){ 4 text = GUI.TextField(new Rect(140, 140, 100, 40), text); 5 6 if (GUI.Button(new Rect(10, 10, 100, 50), text)) 7 { 8 print("用户单击了按钮"); 9 } 10 } 效果: 2.开关按钮控件 1 public bool toggleBool; 2 3 void OnGU

JavaScript网站设计实践(四)编写about.html页面,利用JavaScript和DOM,选择性的显示和隐藏DIV元素

一.现在我们在网站设计(三)的基础上,来编写about.html页面. 这个页面要用到的知识点是利用JavaScript和DOM实现选择性地显示和隐藏某些DIV about.html页面在前面我们为了看导航栏菜单项高亮显示时,已经写了部分内容,只是那时写的代码没有实现div显示和隐藏,现在就在之前编写的基础上,为页面添加显示和隐藏div的效果. 没有写JavaScript之前看到的效果: 实现后的效果图: 这个就是我们现在要做的效果. 1.背景: 我们在about.html页面中写了一个ul列表

C++ 基础设计--包含C++最基础的知识

C++ 语言编写的基础练习 具体案例放在github中 github地址:https://github.com/Master-fd/C-Base 1. 操作符重载 2. 构造与析构 3. 函数模板 4. 函数重载 5. 继承 6. 继承的多肽 7. 类的封装性 8. 类的静态成员 9. 类模板 10. 类模板的局部特化 11. 类模板的特化 12. 命名空间 13. 强制类型转换 14. 异常处理 15. 引用 16. 智能指针

第3章3节《MonkeyRunner源码剖析》脚本编写示例: MonkeyImage API使用示例(原创)

天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文"寻求合作伙伴编写<深入理解 MonkeyRunner>书籍".但因为诸多原因,没有如愿.所以这里把草稿分享出来,所以错误在所难免.有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息. 在上一节的第一个"增加日记"的示例中,我们并没有看到日记是否真的增加成功了,也就是说当时并没有进行结果比较.其实在MonkeyRunner框架中,测试结果的比较往往都是通过截屏比对来完成的.而截屏比

Android App框架设计之编写基类BaseActivity

Android App框架设计之编写基类BaseActivity 编写基类BaseActivity - OOP里面子类里面能够共享父类的方法,提高代码的可复用性 - 基类的编写要根据实际项目的情况,有的可能很简单 比如只是显示 "关于" 信息, 业务功能非常少 你可以不用继承基类进行扩展 BaseActivity继承Activity 还是 FragmentActivity 还是其它? 也是根据你的技术要求,因为解决问题的方法有很多种,或者你根本不用写基类也能完成工作. 我们的目的是编写