设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 软件追踪 其他 查看内容

开源的Ruby on Rails不断走向企业级市场

2007-12-21 14:09| 发布者: joejoe0332| 查看: 9072| 评论: 1

  1、模式

  Ruby on Rails的模型层是通过ActiveRecord来提供的。ActiveRecord是一个对象关系映射(ORM)库,这一点与Hibernate和TopLink相似。ActiveRecord对象表现来自一个数据库表的单个记录。定义一个AR类是非常简单的,并且大多数配置被隐藏在默认约定之后:

class Page < ActiveRecord::Base
end

   将其与一个效果相同的Hibernate定义进行对比:

/**
* @hibernate.class table="miners"
*/
public class Miner {
private Long id;
... more column vars ...
/**
* @hibernate.id generator-class="native"
*/
public Long getId() { return id; }
public void setId(Long id) { this.id = id; }
... more column getters and setters ...
}

   你将注意的第一个区别是,在ActiveRecord的实现中没有结构或列名称的提及。这个代码段将参考页面表,并且自动生成Getter和Setter。这个类的一个实例的属性从数据库中得到,例如它们的类型。这些默认的约定多数可以在需要的时候可以被忽略,但是这个命名约定提供给Rails足够多的信息让你解放出来,让你解决手头上真实的问题。唯一需要进行配置的是建立最初的数据库连接;即database.yml:

development:
adapter: mysql
database: application_development
username: application
password: password
host: localhost

   ActiveRecord的联合可以通过下面的代码来指定:

class User < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :user
end

   上面在Article类中的blongs_to语法告诉ActiveRecord,将来自user_id数据库的一个列关联到user上。它与上面的has_many和has_one宏具有相反的意思。通过这个知识,ActiveRecord可以实现某些有意思的功能,让其本身可以编写出非常具有可读性的代码。

article = Article.find(45)
user
= article.user
users_articles
= user.articles

   2、控制器

  控制器层被用来控制网站的流程。它是ActiveRecord和ActionView之间的数据中介。ActionController提供功能设施,处理和组织来自数据库和Web表单输入的数据,然后它将这些数据递交给ActionView,ActionView将这些数据插入模板并显示,在早期的Rails版本中把控制器看做创建URL路径的一种方法。在现在的社区中,每一个控制器代表着某一类抽象或具体的“资源”。这些资源通常有四个基本的操作:Create(创建)、Read(读取)、Update(更新)和Delete(删除) (CRUD)。大多数控制器具有七个核心的操作(index、show、new、create、edit、update和destroy)。

  举个例子来说,一个事件搜索页面必须查询一个事件列表,并把它往上传递给视图,而且,这个事件列表将通过某些要求的参数实现参数化。

class EventsController < ApplicationController
def index
@events
= Event.fulltext_find(params[:search_term])
end
# ... other actions
end

  这儿Rails中有一些语法甜头(syntactic sugar),可以用来过滤客户端请求和以不同的方式来处理它们。这些语法有before_filter、after_filter和around_filter等。最常用的过滤器是before_filter:

class EventsController < ApplicationController
before_filter :login_required, :except
=> [:index]
# ... other actions
end

   3、视图

   标准的Rails模板引擎被称为ERb。ERb看上去非常像PHP:

<% form_for todo do |f| %>
<table>
<tr><td><%= f.date_select :due_at %></td></tr>
...
</table>
<% end %>

  上面提到的CRUD体系在Rails框架的视图层上也同样存在。上面的form_for使用了通过todo ActiveRecord对象传递的信息,同时加以某些基本的约定,来为这个表单创建提交方法和URL。依附于这个表单的对象具有关于todo对性的信息。这种模式将自动的填充默认值,并且能够被定制和扩展以表现更复杂的格式。通过这些助手的帮助,Rails正在实现众多的设想,不过最终的结果是一个易懂、易维护的非常具有可读性的代码。


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部