- 浏览: 273944 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
我没事就喜欢拿blog练手,blog简单嘛。
嗯,其实这是一个个人空间,blog只是其中的一个模块,我写的时候就在想,模块一多出来的话,那model目录下的model数量不是很多?对了,看过的rails书籍、guides等材料怎么都没有提到过如何划分模块呢?JE上也许有吧,于是搜索了一下,找到这个:http://www.iteye.com/topic/166325
其中
于是我就按照这种方法给model分了模块,像这样
但是这样会有一个问题,生成的migration中,table名会变成blog_topic,而不是topic,这样在持久化操作的时候rails会找不到topic表。如果手动修改migration的话,一来减少了coc的好处,第二,它还是会有问题:运行一下自动生成的那个unittest,rails会报告找不到blog_topic表……需要手动修改fixtures目录中那些yml文件名,把前面的blog_前缀给删除掉。
看来rails对分模块的开发还不能很好的支持呀,大家平时是怎么做的?不会很少划分模块吧?JE上相关的讨论好像就那一个帖子。
对了,还有其中
我有疑问,controller相对于model来说是更粗粒度的,假如给controller分模块了,那model为什么不分?我自己的想法是把model给分了,controller直接放在controller目录下。比如说一个个人空间的blog模块,我要写的话就只有一个BlogsController,和若干个model:Topic,Tag,Comment。每个功能模块对应一个controller我想应该是能做到的,所以我觉得对controller再划分模块好像反而没什么必要。
我想请教一下,大家平时都是怎么组织自己项目中的代码?
===========================================
在“相关帖子”中又找到一个帖子:
http://www.iteye.com/topic/222859
yangzhihuan的方法不错,比起手动修改生成的那些东西好。
我也認為model沒必要分模塊,反而是controller不分的話,會很惡搞
对了,还有其中
我有疑问,controller相对于model来说是更粗粒度的,假如给controller分模块了,那model为什么不分?我自己的想法是把model给分了,controller直接放在controller目录下。比如说一个个人空间的blog模块,我要写的话就只有一个BlogsController,和若干个model:Topic,Tag,Comment。每个功能模块对应一个controller我想应该是能做到的,所以我觉得对controller再划分模块好像反而没什么必要。
model是对持久层的映射,相对比较稳定。
controller基于model,提供对外功能接口。对于不同的用户身份角色,不同的业务场景和使用上下文,尽管基于同样的数据表,很多时候对外提供的功能都有很大差异,从开发者的角度来看,就是对不同model的任意组合与关联,以及任意数据片段和记录的抽取、加工。例如楼主举的例子,博客管理员的管理界面,普通访问者的阅读、搜索界面,登录用户的评论界面,即是在topics、tags、comments这几个表之上展现的不同功能。
这也往往表征了一个系统的业务复杂性。
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
RESTful风格的设计有一个很重要的好处,就是规范你的设计,增强代码的可读性。
RESTful就类似设计模式,如果开发团队里都遵循这个模式,那么交流和重用就会很轻松。
比如说你有一个订单(order)模型,它除了数据库字段里的基本属性之外,还有一系列的event,比如generate, cancel, receive, reject, archive等等,如果用RESTful的设计,那么除了order resources之外,还可以设计一个event resources,那么你就可以利用类似"PUT:/orders/23/events/receive"的方式来触发event。
如果一时想不到这个设计,那你完全可以在orders controller里面加一个fire_event的action,但此例一开,则难免泛滥。换个角度想想,如果让你去读别人设计的模块,添加某个功能,你是不是对REST七个方法之外的action感到抵触呢,有可能压根就没法重用,只能copy一份,再写一个额外的action。正是这些额外的action分散了程序员的注意力,使开发越往后越艰难。
Rails的高效率,是建立在良好的设计上的。作为使用RoR的开发者,这个懒偷不得。
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
你是典型的restful强迫症,你尽量按照这个原则去设计不就可以了,谁规定100%restful了?
另外 controller != resource,resource = URL + xml/xhtml,设计resource就是设计给你什么请求(uri method),你返回什么数据,这中间涉及很多环节
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
你真的不知道rails早八年就有了namespace ?
恩,刚才重新按模型整了下目录,删除了controllers,models目录试了下,设了namespace,确实可以
为什么其他的controller不能化为其他的resource?
你真的不知道rails早八年就有了namespace ?
推荐用engine划分模块,而且通用的模块还可以复用
一直都这么做,不会有 table name 的问题
嗯,其实这是一个个人空间,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
评论
16 楼
kadvin
2009-10-03
支持下楼上两位的观点
楼主可以把不同的model放在不同的目录,但不需要对model进行分模块。
如果你Rails用的正确的话,你会发现模型之间是相互关联的(associations),分模块反而导致你的模型之间难以联系,或者,你会发现分模块这事,给你带来了很多不必要的违反惯例的声明。
楼主可以把不同的model放在不同的目录,但不需要对model进行分模块。
如果你Rails用的正确的话,你会发现模型之间是相互关联的(associations),分模块反而导致你的模型之间难以联系,或者,你会发现分模块这事,给你带来了很多不必要的违反惯例的声明。
15 楼
fireflyman
2009-09-23
机器人 写道
我支持楼上的观点,我觉得yuan完全说反了,controller分模块,而model一般不用分。
我也認為model沒必要分模塊,反而是controller不分的話,會很惡搞
14 楼
机器人
2009-09-22
我支持楼上的观点,我觉得yuan完全说反了,controller分模块,而model一般不用分。
13 楼
liusong1111
2009-09-21
yuan 写道
对了,还有其中
liusong1111 写道
我们的controller组织在多层module/目录下,把model全部放在/models下,效果不错。
我有疑问,controller相对于model来说是更粗粒度的,假如给controller分模块了,那model为什么不分?我自己的想法是把model给分了,controller直接放在controller目录下。比如说一个个人空间的blog模块,我要写的话就只有一个BlogsController,和若干个model:Topic,Tag,Comment。每个功能模块对应一个controller我想应该是能做到的,所以我觉得对controller再划分模块好像反而没什么必要。
model是对持久层的映射,相对比较稳定。
controller基于model,提供对外功能接口。对于不同的用户身份角色,不同的业务场景和使用上下文,尽管基于同样的数据表,很多时候对外提供的功能都有很大差异,从开发者的角度来看,就是对不同model的任意组合与关联,以及任意数据片段和记录的抽取、加工。例如楼主举的例子,博客管理员的管理界面,普通访问者的阅读、搜索界面,登录用户的评论界面,即是在topics、tags、comments这几个表之上展现的不同功能。
这也往往表征了一个系统的业务复杂性。
12 楼
trace
2009-09-20
samsam 写道
下一站,火星 写道
samsam 写道
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
RESTful风格的设计有一个很重要的好处,就是规范你的设计,增强代码的可读性。
RESTful就类似设计模式,如果开发团队里都遵循这个模式,那么交流和重用就会很轻松。
比如说你有一个订单(order)模型,它除了数据库字段里的基本属性之外,还有一系列的event,比如generate, cancel, receive, reject, archive等等,如果用RESTful的设计,那么除了order resources之外,还可以设计一个event resources,那么你就可以利用类似"PUT:/orders/23/events/receive"的方式来触发event。
如果一时想不到这个设计,那你完全可以在orders controller里面加一个fire_event的action,但此例一开,则难免泛滥。换个角度想想,如果让你去读别人设计的模块,添加某个功能,你是不是对REST七个方法之外的action感到抵触呢,有可能压根就没法重用,只能copy一份,再写一个额外的action。正是这些额外的action分散了程序员的注意力,使开发越往后越艰难。
Rails的高效率,是建立在良好的设计上的。作为使用RoR的开发者,这个懒偷不得。
11 楼
下一站,火星
2009-09-19
samsam 写道
下一站,火星 写道
samsam 写道
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
你是典型的restful强迫症,你尽量按照这个原则去设计不就可以了,谁规定100%restful了?
另外 controller != resource,resource = URL + xml/xhtml,设计resource就是设计给你什么请求(uri method),你返回什么数据,这中间涉及很多环节
10 楼
samsam
2009-09-19
下一站,火星 写道
samsam 写道
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
为什么其他的controller不能化为其他的resource?
理论上是可以,但我现在还确实不能把所有controller想象成resource,而且也不直观
9 楼
one23
2009-09-19
下一站,火星 写道
one23 写道
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下
而不是像rails这种,所有controller/model放一controllers/models目录下
你真的不知道rails早八年就有了namespace ?
恩,刚才重新按模型整了下目录,删除了controllers,models目录试了下,设了namespace,确实可以
8 楼
下一站,火星
2009-09-19
samsam 写道
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
为什么其他的controller不能化为其他的resource?
7 楼
下一站,火星
2009-09-19
one23 写道
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下
而不是像rails这种,所有controller/model放一controllers/models目录下
你真的不知道rails早八年就有了namespace ?
6 楼
samsam
2009-09-19
我对resource的controller比较迷惑,每个resource肯定有一个controller,其他的controller按照什么来划分呢
5 楼
one23
2009-09-19
我个人觉得像django这个目录分发清晰的,同一业务相关的controller,model[,view]各自放一目录,
而不是像rails这种,所有controller/model放一controllers/models目录下
而不是像rails这种,所有controller/model放一controllers/models目录下
4 楼
Raecoo
2009-09-18
rainchen 写道
我估计项目做复杂了,会往engine的模式发展,每个模块都是个子应用(mini app)
对这话题感兴趣但没实践过,留位围观。
对这话题感兴趣但没实践过,留位围观。
推荐用engine划分模块,而且通用的模块还可以复用
3 楼
hozaka
2009-09-18
module Blog class Article < ActiveRecord::Base end end
一直都这么做,不会有 table name 的问题
2 楼
qichunren
2009-09-18
听说rails3支持这个。
1 楼
rainchen
2009-09-18
我估计项目做复杂了,会往engine的模式发展,每个模块都是个子应用(mini app)
对这话题感兴趣但没实践过,留位围观。
对这话题感兴趣但没实践过,留位围观。
发表评论
-
rails测试中遇到的一些问题
2010-09-03 11:41 25091,页面的测试。 假设某view中有一个表单,表单里有3个字段 ... -
BDD on Rails
2010-05-11 02:59 0首先,嘿嘿,我对敏捷 ... -
强大的 Rails 2 查询、搜索插件:SearchLogic
2010-04-20 23:31 5423发现还有人在看这个博客,这个 SearchLogic 只支持 ... -
authlogic-openid
2010-04-20 00:32 0http://github.com/binarylogic/a ... -
测试驱动开发实战(authlogic学习笔记)
2010-04-17 00:06 0这会是个很cool的笔记 cucumber还不会用,只用R ... -
RoR简单培训。
2010-04-12 10:08 0目的 上周二Bob给大家从总体上概括了一下Rails的开发。我 ... -
用RSpec和Webrat为页面写测试
2010-03-10 23:26 0The RSpec Book 23章(不完全照书上记,而是我自 ... -
rails杂记
2010-03-08 11:36 1422=======Rails2======= 用RSpec测试A ... -
Rails文件上传利器——paperclip笔记
2010-02-27 12:04 14928Githubhttp://wiki.github.com/th ... -
为SearchLogic添加一个remote_form_for方法。
2010-02-10 15:00 1377稍微看了一下,好像挺简单,只是处理了一下参数。 # A ... -
A Guide to Testing Rails Applications
2010-02-03 19:56 0什么是Fixtures fixtures允许你在测试运行之前往 ... -
改个bug
2010-01-20 17:38 1205问题见:http://yuan.iteye.c ... -
reset/reload
2010-01-20 16:26 1125http://caboo.se/doc/classes/Act ... -
Acts As Taggable On Steroids
2010-01-20 13:53 2593参考着mephisto写blog程序 ... -
Active Record Validations and Callbacks
2009-10-18 02:45 2361参考链接:http://guides.ru ... -
Layout in Rails
2009-10-12 17:28 4731参考链接:http://guides.rubyonrails. ... -
Rendering in Rails
2009-10-10 02:10 4509参考链接:http://guides.rubyonrails. ... -
如何为Rails的views写测试。
2009-10-01 16:53 1108原文链接:http://weblog.jamisbuck.or ... -
Rails Form helpers
2009-09-28 03:31 5160参考链接:http://guides.ru ... -
rails2.3 routes笔记
2009-09-23 04:10 2822参考链接:http://guides.ru ...
相关推荐
在“ruby on rails社区网站开发源码”中,我们可以学习到如何利用Rails构建一个互动性强、功能丰富的社区网站。以下是一些关键知识点: 1. **安装与环境设置**:首先,你需要安装Ruby和Rails。这通常涉及设置Ruby...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用框架,它遵循敏捷开发原则,致力于简化Web开发过程。Rails的核心理念是“Convention over Configuration”(约定优于配置),这意味着开发者可以减少大量...
在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...
标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...
【使用 Ruby on Rails 和 Eclipse 开发 iPhone 应用程序教程】是一个面向中级开发者的系列教程,旨在教读者如何利用 Ruby on Rails 框架在服务器端为 Mobile Safari 设计和提供自定义内容,以适应 iPhone 和 iPod ...
ruby on rails for eclipse开发插件
### Ruby on Rails Web 敏捷开发第四版 #### 关于本书的重要信息 《Ruby on Rails Web 敏捷开发第四版》是一本专为希望深入了解 Ruby on Rails 的开发者编写的书籍。该书主要针对 Rails 3 版本进行讲解,因此对于...
7. **Helper方法**:为了保持视图的简洁,Rails允许你在helper模块中定义辅助方法,然后在视图中调用。 8. **测试驱动开发(TDD)**:Rails鼓励使用测试来驱动开发,内置了Test::Unit和RSpec等测试框架。 9. **...
Ruby.onRuby.on.Rails.Web开发之旅
Ruby on Rails,简称Rails,是由David Heinemeier Hansson创建的一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性。在这个开发环境包中,我们拥有Ruby ...
本资料介绍了使用Ruby on Rails进行Web开发的相关知识。本书从对Rails的初印象讲起,包括其安装的困难到后来发现其使用的便捷性。接着详细介绍了Rails的开发环境、版本控制、应用部署等内容,通过实际案例逐步引导...
Ruby on Rails,简称Rails,是基于Ruby编程语言的一个开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性,同时强调“约定优于配置”的原则。在本实例开发中,我们将探讨如何...
- **Rails的主要特性**:Rails采用了约定优于配置(Convention over Configuration)的设计理念,这使得开发过程中的很多设置能够自动完成,从而加快了开发速度。 ### Ruby编程语言 - **Ruby语言**:Ruby是一种...
在开发Web应用时,Ruby on Rails(简称Rails)框架因其高效、简洁的代码风格和强大的社区支持而备受青睐。Aptana是一款强大的集成开发环境(IDE),尤其适用于Rails项目的开发,它提供了丰富的特性来提升开发效率。...
在学习Rails之前,你需要掌握Ruby的基本语法,包括变量、数据类型、控制结构、类与对象、模块等概念。 2. **Rails框架核心概念**:Rails的核心概念包括路由(Routes)、控制器(Controllers)、模型(Models)、...
《Web开发敏捷之道——应用Rails进行敏捷Web开发》是一本深度探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的专业书籍。该书涵盖了从初学者到高级开发者所需的各种知识,旨在帮助读者掌握敏捷开发...
"Ruby中文文档"可能包括了对Ruby语法、类、对象、模块、方法等基础知识的介绍,以及Rails框架的核心概念,如路由(Routing)、控制器(Controllers)、视图(Views)、模型(Models)、ActiveRecord、助手方法...