初学Rails

因为需要接手维护一个Rails搭建的网站,所以稍微学了一点Rails,做了一些简单的笔记

安装和使用

  1. 使用RailsInstaller在Windows环境下安装rails环境,如果出现:
    rake ruby gem命令有效而rails bundle命令无效的情况,则需要修改rails.bat文件,修改其内容为:

    1
    2
    3
    4
    5
    6
    @ECHO OFF
    IF NOT "%~f0" == "~f0" GOTO :WinNT
    ECHO.This version of Ruby has not been built with support for Windows 95/98/Me.
    GOTO :EOF
    :WinNT
    @"%~dp0ruby.exe" "%~dpn0" %*
  2. Rails项目里,Gemfile文件内包含了此项目用到的依赖,通过包管理工具gem来安装:gem install gemnames [-v=version]

    • gem update --systemgem update有明显区别,后者会将全部的东西升级到最新。
    • gem installbundle install是不一样的。
  3. 在Rails的项目里:
    • bin/rake db: create需要注意,若在Windows环境下,要在命令里加上ruby(FIXME: 需要回头根据笔记确认)
    • bin/rails g scaffold可以生成一组model、view和controller——值的注意的是,根据约定,需要特别注意单复数的问题,比如在model中的单数person在controller的RESTFUL里是附属的people
    • bin/rake db:migrate可以瞬间生成一个带有CRUD的数据表。

一些基本认知

  1. Rails是一种MVC实现,

    • M层对数据和业务做封装和管理;C层接受请求,决定调用那个M去处理,再决定由哪个V来显示返回的数据,简单地说,控制视图层V的展示逻辑。
    • 不重复已有代码
    • 它还有一个鲜明特点:约定大于配置,或者说,优先于配置,约定体现在方方面面,比如
      1. 表、类而言,持久化的类,其名首字母大写,而表名全部小写;类和其对应的表同名,类是单数,表名是复数遵守英文的复数拼写规则;表名多单词的时候,用下划线分割,末词复数,而对应的类每个单词首字母大写,末词一定是单数形式。
      2. 约定的默认解析:http://域名/控制器/控制器(c层)中的Action名/请求参数(传给Action)
  2. 从代码结构上看:

    • Action Pack 封装了“VC”的功能,其中包含Action Controller和Action View
    • Active Record 是一个Rails应用程序中模型的基础;其提供了数据库的独立性、基本的CRUD功能、高级查找和模型间的关联等。这是ORM层,任何实体类,都是通过继承他来完成和DB的交互(提供了默认的操作DB的方法)。默认情况下,实体类们和DB的表是一一对应的映射关系,也可以是一对多或者多对多。映射的主键是一名为id且自动增长的int列,访问主键永远使用id,id要唯一。
    • Active Resource 提供管理业务的对象之间的链接,和RESTFul Web服务。实现了映射网络资源的方式,和本地对象CRUD的定义;
    • Railties 建立任何新Rails应用程序的核心代码,可以整合各个框架和插件。
    • Gemfile文件 是Bundler需要的声明依赖包的文件。
  3. 路由类型:

    • 默认路由
    • 资源路由
    • 命名路由
    • 嵌套路由
    • 正则路由