ROR
吸引我的重要一点是:约定优于配置!
以及ROR的一个原则:Don't Repeat Yourself(DRY)
这个原则保证了将来我们修改代码的时候只改一处就行了,绝对不要重复自己。
<?XML:NAMESPACE PREFIX = O />
在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
下一步必须告诉Rails用database的方式来处理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 Support(
Active 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入门书籍,建议看英文版的,中文版的有第一版,买了书的可以先看中文版第一版,然后再下载英文版第二版的看,比较有长进啊。