[Ruby] 创建ActiveRecord的子类总结

  • 一个使用动态记录作父类例子

在 《Metaprogramming Ruby(Ruby元编程) 》一书中 ,开篇的介绍中,第一个小例子就是在数据库中来创建一个电影列单。作者使用了ActiveRecord(动态记录)产生一个子类Movie,神奇的是只用了寥寥代码就实现了。


出于对作者尊重,我仿照了一个例子, 来创立一个食物列单来记录家中现在都用什么食物。

Class Food < AcitveRecord::Base

end

然后在初始化中,是这样写的:

                food = Food.create

food.name= "Milk "

food.name #这个是一个方法,屏幕打印出食物的名字。

  •   为什么可以这么写?

这样简洁的过分的代码实在是令初学者咋舌,什么都没说就可以做事情,就算是魔法师施展魔法也得念个咒语吧。

原来,这里得益于于ruby一个的强大特性: writing code that writes code(能够生成新代码的代码)。一段ruby代码不仅可以完成自身应该的使命,也可以兼顾去指挥和帮助新的代码完成类似的任务。

举个例子,当我们使用ruby写好一段程序的时候 就像在公司中招募了一名新职员A,后来我们发现新职员A的将他分内的事情做得的确很好,但是公司职能扩大了,需要招募新新职员B来完成的一份些许类似的工作,那么在给新新职员B入职培训的时候,只需要告诉他:1,你需要向前辈A请教你该做的工作  2,我现在告诉你的是前辈A不知道的新增加的工作。

曾经看过一个观点,说代码糟糕不是因为重用而是因为重写。我想ruby这里的宗旨,应该就在于减少不必要的重写吧。

回到上面两行 字字珠玑的代码,这里面Movie需要实现的方法在ActiveRecord里面都有定义了,所以直接一个end潇洒地结束了。

那为什么还多此一举来声明一下呢,直接用AcitveRecord不就好了,问题是那样的话程序员就需要记忆一个他陌生的class,而且他无法添加自己想要的类属性,类属性的方法就无从下手。


那么我们来稍微看下ActiveRecord中具体是怎么实现这么神奇的功能的吧


  • 我想试试这个代码!

接下来就是如何实现这短短的几行代码。个人建议创建一个.rb 然后在cmd中运行ruby *.rb来测试。

A 准备工作

mysql的安装  

mysql connector安装 http://dev.mysql.com/downloads/connector/c/%20

gem包的安装下载

安装mysql

http://kingxss.iteye.com/blog/2014443

链接库

http://blog.csdn.net/janne09/article/details/11634699

http://www.admin10000.com/Document/114.html


active establish connection

http://apidock.com/rails/ActiveRecord/Base/establish_connection/class



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值