rainchen 写道
更性感的migration:
class User < ActiveRecord::Base
fields do
name :string, :null => false
email :string
about :text, :default => "No description available"
end
end
我还看到这样做的一个好处,更有利于Aspect Programming。
比如,Model假删除:现在Rails里的Model.destroy就是从数据库里彻底删除,我想把系统里的几个模型做成假的删除。就是把is_active字段设为false,find也找不到它。
要做到find找不到假删除的记录,只要hack一下ActiveRecord::Base就行了,但是is_active字段还是要一个个数据表里去加的。
如果把数据库字段也定义在Model里,就可以在一个插件里一揽子解决这个问题。
做一个插件,先添加一个is_active字段,default设为true,然后hack一下find,还要hack一下destroy。起个名字,比如acts_as_fake_delete。然后在需要的Model里call一下就都搞定了。
DRY的好处之外,是代码有意义。
实际项目的数据表中有不少功能性字段,比如Rails考虑到的created_at, updated_at,is_locked,再比如Rails没考虑的is_active,created_by, updated_by等等,都可以用插件抽象出来。
期待这个变化。
----
论坛中楼主回帖误解了我的意思,再多解释一下:
这样的例子在企业级应用里很常见,大量的数据表要有created_by(user_id),is_active,created_at这样的字段。
再举一个例子,每次用到created_by的话,都要先写migration,再在model里定义belongs_to :created_by_user, :class_name => 'User', :foreign_key => :created_by;还要before_save的时候设置self.created_by = current_user.id;以及controller/view上CRUD的一整套东西。现在因为必须用migration定义field,这个 “repeat yourself”的逻辑就不能彻底抽出来,做到增减随意。
----
更多讨论:http://www.iteye.com/post/387093
分享到:
相关推荐
安装 $ composer require doctrine/migrations:dev-master$ composer require akrabat/rka-doctrine-migrations-runner(我们需要明确要求学说/迁移,因为该项目尚未发布稳定版本)用法创建migrations文件夹创建一个...
可以通过Meteor的软件包管理器安装Meteor Migrations。 类型: $ meteor add percolate:migrations 原料药 基本 要编写简单的迁移,请在项目的服务器部分的某处定义: Migrations . add ( { version : 1 , up : ...
通过合理使用这个工具,开发者可以更有效地管理数据库变更,降低维护成本,同时避免因手动操作导致的潜在错误。 总之,MyBatis-Migrations 是 MyBatis 框架的重要补充,它为数据库的版本控制提供了便利,使数据库...
5. **Java API**:除了命令行工具,MyBatis-Migrations 还提供了Java API,使得开发者可以在代码中集成数据库迁移功能,便于在自动化构建或持续集成流程中使用。 6. **回滚功能**:如果某个数据库变更导致问题,...
php bin/console doctrine:migrations:diff 执行待迁移: php bin/console doctrine:migrations:migrate 显示移民状况: php bin/console doctrine:migrations:status 说迁移已经执行(假迁移): ...
在压缩包文件名称"mybatis-migrations-3.2.0"中,我们可以推测这包含了MyBatis Migrations 3.2.0版本的全部内容,可能包括jar文件、文档、示例脚本等,用户可以直接下载并根据需求进行配置和使用。 总结来说,...
在.NET开发领域,Entity Framework(简称EF)是微软提供的一款强大的对象关系映射(ORM)框架,它极大地...通过研究这个测试项目,你可以更深入地理解Migrations的工作原理和使用方式,从而在自己的项目中灵活运用。
总的来说,`laravel-migrations-generator`是Laravel开发中的一个实用工具,它简化了数据库到Laravel迁移的过程,让开发者能更专注于业务逻辑的实现,而非重复的数据库结构编写工作。通过熟练掌握这个工具,可以提升...
在本文中,我们将深入探讨Laravel开发中的一个重要概念——API迁移。...API迁移是针对API驱动的应用程序,确保...通过理解和熟练运用这一特性,开发者可以更高效地迭代和扩展API,同时保持数据库结构的整洁和一致性。
为了更好地管理和跟踪这些变更,YII 2框架提供了一个非常实用的功能——数据库迁移(Migrations)。数据库迁移可以帮助开发者在不影响现有数据的情况下,对数据库结构进行更改。 #### 二、YII 2数据库迁移的基本操作 ...
Migrations插件使开发人员能够快速轻松地在数据库模式版本之间进行管理和迁移。 随着应用程序的开发,可能需要对数据库进行更改,并且在团队中进行管理会变得非常困难。 Migrations插件使您能够以迭代方式共享和...
Laravel 5安装推荐的安装方式是通过composer: composer require --dev " xethron/migrations-generator " 在Laravel 5.5中,服务提供商将自动注册。 在旧版本的框架中,编辑config/app.php并将其添加到provider
Laravel官方文档讲解,该资料是一整套视频,需要逐个下载,Database Migrations 数据库迁移
在Django 1.8及以上版本,还可以用`./manage.py migrate my_app zero`回滚所有迁移。 5. **解决迁移问题**: - 在数据库的`django_migrations`表中查看迁移状态。 - 检查`migrations`文件夹中的文件是否与数据库...
migrations, CakePHP 3.0数据库迁移插件 的迁移插件 这是 CakePHP 3的数据库迁移系统。插件由一个用于 phinx 迁移库的CakePHP shell 包装器组成。安装你可以使用 Composer 插件将这个插件安装到你的CakePHP应用程序...
资源分类:Python库 所属语言:Python 资源全名:mongodb_migrations-1.1.0-py3-none-any.whl 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059
标题中的“PyPI 官网下载 | migrations-0.0.1.tar.gz”指的是Python的包管理系统Python Package Index (PyPI) 上发布的名为“migrations”的软件包的版本0.0.1,该版本被打包成tar.gz格式供用户下载。PyPI是Python...
解压后,开发者可以深入研究源代码,理解其内部工作原理,甚至可以根据项目需求对其进行定制或扩展。 总的来说,`mongodb-migrations`是Python开发人员管理MongoDB数据库结构变化的强大工具。通过这个1.1.0版本的...
在Laravel框架中,`Request`和`Migrations`是两个非常重要的概念,它们对于构建高效...在解压并学习"Laravel开发-request-migrations .zip"中的内容后,你将对这两个概念有更深的理解,并能更熟练地应用到实际项目中。