ROR ! 一些学习心得

来源:互联网 发布:淘宝店链接在哪里找到 编辑:程序博客网 时间:2024/06/05 14:35

ROR吸引我的重要一点是:约定优于配置!

以及ROR的一个原则:Don't Repeat Yourself(DRY)

这个原则保证了将来我们修改代码的时候只改一处就行了,绝对不要重复自己。

 

Agile Web Development with Rails 2Ed中,关于session的处理方式,选用了database方式。

我们用rake命令来创建一个sessions的数据库。

depot> rake db:sessions:create

exists db/migrate

create db/migrate/004_add_sessions.rb

 

Then, we’ll apply the migration to add the table to our schema.

 

depot> rake db:migrate

 

下一步必须告诉Railsdatabase的方式来处理session。因为 the default is to use the filesystem

config目录下找到environment.rb,打开以后找到下面这三行。

# Use the database for sessions instead of the file system

# (create the session table with 'rake db:sessions:create')

# config.action_controller.session_store = :active_record_store

把第三行的#号去了就可以了。

在重启服务器之后,刷新一下浏览器就可以看到sessions表中存储的数据了。

 

store控制器中加入了如下方法:

private

def find_cart

session[:cart] ||= Cart.new

end

用了ruby的条件赋值。简化了代码。

前面加private是为了防止Rails把这个方法当作一个可用的action方法。如果加入其他的action方法必须放到private这个声明之前。

 

在没有数据库实体映射的模型中,我们不得不用include Reloadable来在每个请求前加载这些class。我们做到在第一次启动服务器之前就添加这条命令就不用再重启服务器了。

 

Agile Web Development with Rails 第二版的内容中加了不少更新。在Rails Framework部分增加了Active SupportActive Support is a set of libraries that are shared by all Rails components.)和Migrations创建数据表的migration,你可以认为它是ruby语法写的CREATE TABLE,而且它做的也就是CREATE TABLE,但实际上它是schema!它已经描述了数据表是怎样的了,而不仅仅是生成数据表,生成数据表仅仅是migration执行时瞬时的行为,生成数据表之后Rails自动提供ORM功能,不再需要另外的schema或者自动生成的code来重复描述schema。这正是其符合DRY原则的地方,在整个RoR应用当中,只有migration这一处描述了schema,其它地方均无再次描述schema的地方。

depot的应用中加了ajax的应用,等有空的时候把那章翻译出来。。。

 

总的来说Agile Web Development with Rails是本真正的ROR入门书籍,建议看英文版的,中文版的有第一版,买了书的可以先看中文版第一版,然后再下载英文版第二版的看,比较有长进啊。

 

原创粉丝点击