论坛首页 编程语言技术论坛

rails中分模块开发。

浏览 7129 次
精华帖 (1) :: 良好帖 (4) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-09-18   最后修改:2010-02-18
我没事就喜欢拿blog练手,blog简单嘛。

嗯,其实这是一个个人空间,blog只是其中的一个模块,我写的时候就在想,模块一多出来的话,那model目录下的model数量不是很多?对了,看过的rails书籍、guides等材料怎么都没有提到过如何划分模块呢?JE上也许有吧,于是搜索了一下,找到这个:http://www.iteye.com/topic/166325
其中
magicgod 写道
2.0已经有了命名空间,例如:
ruby script/generate model Admin::User

于是我就按照这种方法给model分了模块,像这样
ruby script/generate model Blog::Topic title:string content:text


但是这样会有一个问题,生成的migration中,table名会变成blog_topic,而不是topic,这样在持久化操作的时候rails会找不到topic表。如果手动修改migration的话,一来减少了coc的好处,第二,它还是会有问题:运行一下自动生成的那个unittest,rails会报告找不到blog_topic表……需要手动修改fixtures目录中那些yml文件名,把前面的blog_前缀给删除掉。

看来rails对分模块的开发还不能很好的支持呀,大家平时是怎么做的?不会很少划分模块吧?JE上相关的讨论好像就那一个帖子。

对了,还有其中
liusong1111 写道
我们的controller组织在多层module/目录下,把model全部放在/models下,效果不错。

我有疑问,controller相对于model来说是更粗粒度的,假如给controller分模块了,那model为什么不分?我自己的想法是把model给分了,controller直接放在controller目录下。比如说一个个人空间的blog模块,我要写的话就只有一个BlogsController,和若干个model:Topic,Tag,Comment。每个功能模块对应一个controller我想应该是能做到的,所以我觉得对controller再划分模块好像反而没什么必要。

我想请教一下,大家平时都是怎么组织自己项目中的代码?

===========================================
在“相关帖子”中又找到一个帖子:
http://www.iteye.com/topic/222859

yangzhihuan的方法不错,比起手动修改生成的那些东西好。
yangzhihuan 写道
我的解决方法是:
class Blog::Article < ActiveRecord::Base
  set_table_name :blog_article
end
   发表时间:2009-09-18  
我估计项目做复杂了,会往engine的模式发展,每个模块都是个子应用(mini app)
对这话题感兴趣但没实践过,留位围观。
0 请登录后投票
   发表时间:2009-09-18  
听说rails3支持这个。
0 请登录后投票
   发表时间:2009-09-18  
module Blog
  class Article < ActiveRecord::Base
  end
end


一直都这么做,不会有 table name 的问题
0 请登录后投票
   发表时间:2009-09-18  
rainchen 写道
我估计项目做复杂了,会往engine的模式发展,每个模块都是个子应用(mini app)
对这话题感兴趣但没实践过,留位围观。

推荐用engine划分模块,而且通用的模块还可以复用
0 请登录后投票
   发表时间:2009-09-19  
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下
0 请登录后投票
   发表时间:2009-09-19  
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
0 请登录后投票
   发表时间:2009-09-19  
one23 写道
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下


你真的不知道rails早八年就有了namespace ?
0 请登录后投票
   发表时间:2009-09-19  
samsam 写道
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢

为什么其他的controller不能化为其他的resource?
0 请登录后投票
   发表时间:2009-09-19   最后修改:2009-09-19
下一站,火星 写道
one23 写道
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下


你真的不知道rails早八年就有了namespace ?


恩,刚才重新按模型整了下目录,删除了controllers,models目录试了下,设了namespace,确实可以
0 请登录后投票
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics