道喜技术日记 .^. 天天红玉世界

Rails Ruby MacOSX 。。。创新来自于刻苦的实践和勤奋的思考... www.hhtong.com


聊天世界:使用migration还是SQL语句

Gudao Luo2008-08-27 at 21:23发表的

使用migration还是SQL语句13:27 网友: luo老师在吗
13:28 我: hi
13:30 网友: 我想问一下rails开发中关于模型和数据库在建立的时候一般采取什么方式呢,是直接sql执行建表然后生成model呢,还是使用migration那种来建立管理数据库呢
13:34 我: 使用migration
Rails开发一般都使用migration
13:35 不要使用SQL语句
13:36 网友: 哦 ~ 外键是不是要自己用execute来生成呢?
我: 所有都可以migration
13:37 Rails 2.1使用references, 之前使用integer
13:39 网友: 那么就是说使用代码来替代sql,并使用migration来管理数据库版本对吧!
6 分钟
13:45 我: yes
13:47 一般是两个过程:migration命令和rake db:migrate
网友: 原来rails2.1中已经带了references咯,那么之前的integer是不是只是声明了一个column然后使用rails中model中的那些关系来用代码维护关系呢(我是指那些如has_many :这种)而不会在数据库中建立外键
13:48 我: 是的
13:49 rails 2.1也可以使用integer代替references
13:50 网友: 就是说只有rails2.1中才能用代码生成数据库中的外键,而以前的版本其实是没有创建外键的,如果要创建外键需要自己写execute来用sql语句实现对吧
13:51 我: 之前也可以,使用integer
13:52 网友: t.column :xxxx, :integer是这样吗
我: xxxx_id, xxxx是表的名称
13:53 网友: 哦 ~ 那很智能的哦!
这样会自动生成外键杜比啊
对吧
我: 是
13:54 网友: 我之前看了那个敏捷rails书上只有自己写execute来实现的,谢谢您的指导啊~
13:56 我: 没有关系
13:57 网友: 还有一个问题……
嘿嘿
13:58 就是多对多这种关系,在模型设计的时候该建一个中间表的对象吗
14:02 我: 在migration不一定,但是从实践中感到最好是使用中间表。
14:04 网友: 是这样的……
user 和 group是多对多
我可以用user.groups 获得多个group
也可以用group.users 获得多个user
我需要建一个GroupUser这个model么?
14:05 这是我很疑惑的地方
我: 不是必须的
使用的
网友: 主要是看需求对吧!
14:06 我: 是的
网友: 明白了!
14:08 谢谢~
我: 没关系