首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > Ruby Rails >

来来,会RoR或者Hibernate的都可以回答。解决办法

2012-02-14 
来来,会RoR或者Hibernate的都可以回答。1个blog有N个comment,现在已知目标blog的id,要持久化一个comment,做

来来,会RoR或者Hibernate的都可以回答。
1个blog有N个comment,现在已知目标blog的id,要持久化一个comment,做法有如下2种:

第1种 
[code=Ruby]blog = Blog.find_by_id(params[:id])
comment = Comment.new(params[:comment])
blog.comments < < comment[/code]

第2种
[code=Ruby]comment = Comment.new(params[:comment])
comment.blog_id = params[:id]
comment.save [/code]

你会选择哪一种?为什么?

[解决办法]
第一种,两者之间的关联是由model中定义的,至于用的是外键,还是其它键都可以由model中进行调整。而如果采用第二种,就像你所说的,一是不那么的OO,另一方面,如果blog中不存在该id(也许在你删除时,改blog已被删除等),你在comment中的附值也是无效的。其它方面就是不利于程序的修改和阅读。万一两者关系发生变化,你要改的位置可能就多了。

目前来说,我都是采用的第一种方法。

热点排行