文章标签 ‘Rails’
ActiveRecord有一个功能,如果你的数据库中有一个字段名为“type”,在返回结果时,他将自动使用type字段中的值作为模型类的类名来实例化该结果,这样原始的模型就纯粹退化为DAO类了。 不过我有一个老应用,某个表中恰巧有一个“type”字段,里面又记录着一些奇怪的值,我又不能把这个字段改名,于是我就只能想办法让ActiveRecord把这个字段名给忽略掉了。 其实忽略的方法也挺容易的,写个:“set_inheritance_column nil”就可以了,放到真正的ActiveRecord代码中可能看起来会象这样: 看起来挺简单的,不要要是找不着,真够你郁闷一阵子的。
ApplicationController是Rails中控制器的基类,在Rails 2.3.0之前,ApplicationController类保存于app/controllers/application.rb文件中,而在Rails 2.3.0中,这个类被保存于app/controllers/application_controller.rb这个文件中。 这样相对于application_helper.rb助手类,在命名风格上就更加统一了,如果你的Rails项目是使用Rails 2.3.0之前的版本生成的,当你将Rails库更新到Rails 2.3.0之后,就需要手动将app/controllers/application.rb手动更名为app/controllers/application_controller.rb。 如果不更改文件名的话,系统则会提示错误: uninitialized constant ApplicationController DHH大神在CHANGELOG里是这么写的:* BACKWARDS INCOMPATIBLE: Renamed application.rb to application_controller.rb and removed all the special casing that was in place to support the former. You must do this rename in your own application when you upgrade to this version [DHH]
在我遇到Rails之前,我从来不会去关心程序的艺术性,也不会去考虑程序是否健壮,我的目的简单而单纯,只要他能按照我预期的方式执行就可以了。 在我遇到Rails之后,我为他的美所惊叹,原来框架可以被设计的这么美,他几乎完全符合我对程序的审美观,我开始坚信真的可以把一个工程当作成一件艺术品来做。 当我欣赏Rails的美妙,享受他带给我快感的同时,问题也随之而来了:匮乏的工程经验总是使我陷入过度设计之中,过于追求程序的艺术性使我在书写代码的时候唯唯诺诺。 或许,当你看惯了Rails,越来越习惯于他的美,也越来越趋同于他的哲学之后,你就会发现世界上太多太多不美的东西,有人说:完美主义者总是生活在痛苦之中。我非常同意这个观点,Rails正不断地影响我,使我在写代码的时候,总是想成为一个完美主义者,却因为代码中种种的不美妙,迟迟下不了手,给我带来了莫大的痛苦。 我是否应该把他放一段时间,尝试着努力接受一些自认为不那么美的设计,或许,自己就不那么痛苦了吧?
Rails标准教程《应用Rails进行敏捷Web开发(Agile Web Development with Rails, 3rd Edition)》第三版已经出版,第一版他讨论的是Rails1.0的内容,到第二版中讨论则是Rails1.2的内容,而第三版中,他讨论的正是我们正在使用的Rails2.0。 此外,这本书的作者名单还增加了一位新作者,《RESTful Web Services》的作者Sam Ruby也加入到《应用Rails进行敏捷Web开发》第三版的撰写中,相信第三版一定会比第二版、第一版更加精彩,更加值得购买。 这本书目前可以在The Pragmatic Bookshelf上购买到,关注Rails的朋友可千万不要错过《应用Rails进行敏捷Web开发》第三版这本好书哦。
不知是黑客攻击原因,还是其他问题,今天早上Rails官方网站:http://www.rubyonrails.org无法正常访问,从国外访问Rails官方网站提示出现严重的500错误,从国内访问问题更严重,竟然将rubyonrails.org的域名劫持到一个广告页。 各地对rubyonrails.org的域名解析地址不一,乱套了。
一、插件介绍 Localization是一个为Rails编写的插件,有点类似于gettext,使用很简单的方法就可以为你的应用实现多语言支持,进而实现应用的本地化。 二、插件安装 这个插件的安装方式与其他的Rails插件安装没啥太大区别,只需要在Rails项目目录中按照如下命令安装即可: ruby script\plugin install localization 三、插件使用 当Localization插件安装完成之后,Rails项目启动之后将自动载入他,我们需要在Rails项目目录中建立一个lang目录用来存放语言包。 推荐的做法是在lang目录下建立的语言包的文件名应该与语言名能够对应起来,例如我们要为这个项目建立一个中文语言包,我们就需要在RAILS_ROOT/lang/目录下建立一个名为zh_CN.rb的文件。内容如下: Localization.define('zh_CN') do |l| l.store 'Manage', '管理' l.store 'Users', '用户' end 然后在application.rb文件中加入如下内容,定义需要使用的语言名: Localization.lang = 'zh_CN' 再打开一个模板文件,在其中输入如下内容: <%= link_to _("Manage"), admin_blogs_path %> 启动Rails项目,浏览这个页面,看看是不是输出的是中文呢?
Rails2.0.2的安装教程网上肯定有不少,不过我这个人比较懒,所以我的安装教程肯定有我自己的风格,啥风格?懒! 一、下载ruby安装包 既然我比较懒,我必定会从http://www.ruby-lang.org/en/downloads这个地址下载Ruby 1.8.6 One-Click Installer,啥叫One-Click Installer?说白了,就是里面包含了很多ruby常用的包,比如rdoc,ri,gem等等,相信你也很懒,点我这个链接你就能把他下载下来。 二、运行这个安装包 一个标准的Windows的exe包,运行之后就是一路下一步就可以了,没啥好讲的,不过ruby的安装路径可能需要根据你的个人喜好酌情修改一下,我个人喜欢把他装在E:\Program Files目录下,如图显示。 三、使用gem安装rails 使用One-Click Installer就是好,装完了gem都直接带好了,我们就只管运行命令就好了,打开一个cmd窗口,直接执行gem install rails一路Y,他会连接到官方站,然后根据依赖关系提示你安装其他几个包。 四、安装sqlite3-ruby包 由于Rails2.0.2默认使用的数据库是sqlite数据库,所以我们需要给ruby装上sqlite3-ruby包,具体安装方式与rails类似。直接使用命令gem install sqlite3-ruby一键搞定。在这步的时候,他会让你选择安装哪个版本的sqlite3-ruby,我们选择新的mswin32那个版本就好了。 五、下载sqlite库 虽然ruby的sqlite库已经有了,但是系统的sqlite库却还没有,因此我们还需要去sqlite官方去下载一个sqlite的dll库。 下载地址:http://www.sqlite.org/sqlitedll-3_5_4.zip 下载后,将其中的dll文件解压缩到你的ruby安装目录的bin目录下就可以了。 六、运行rails2.0.2 随便找个目录,使用rails demo命令为rails新建一个名为demo的项目,并在当前目录下新建一个demo目录,在目录里保存的就是我们的demo项目的代码。 再使用ruby demo\script\server来启动这个demo项目,之后用你的浏览器打开:http://localhost:3000 看看可爱的Rails2.0.2是不是呈现在你的眼前拉? 在安装过程中有任何疑问可以与我联系:QQ、MSN、Gmail:wuweixin@gmail.com,或者直接在我的Blog上留言都可以:)
有很多人无法使用gem直接安装Rails 2.0,Rails官方博客上给出了一个解决方法,具体方案如下: 首先需要把系统内的RubyGems升级到0.9.5,查看gem版本号可以通过命令: gem --version 如果显示的是0.9.5,那说明你已经可以使用gem将Rails升级到2.0了,如果不是0.9.5,那你就需要升级下RubyGems。 gem update --system 就可以将gem升级到0.9.5,然后再执行: gem install rails 把新的Rails 2.0安装到系统内。由于Rails 2.0新发布,所有可能有些镜象站点还缺少gem包,因为在gem安装的时候,会提示找不到文件等HTTP 404错误,我们可以把安装源指定到rubyonrails的官方源上: gem install rails --source http://gems.rubyonrails.org 这样就成功地把Rails 2.0安装到你的系统上了。
现在基本每一个 BLOG 都支持 RSS 阅读了,甚至很多新闻,论坛站点都支持 RSS 订阅,让我们来看看基于 Rails 开发的 BLOG 站点应该如何增加 RSS 输出呢? 假设我们已经让我们的 BLOG 使用形如:http://www.wuwx.net/blogs 的地址来浏览了,应该怎么样规划我们的站点 URL,使得加上去之后,我们的 URL 比较友好,并且还是符合 RESTFull 的呢? 使用 /blogs/rss ?还是 /rss/blogs ?都不是,我们知道,/blogs.xml 和 /blogs.html 表示对于 /blogs 的 xml 和 html 的两种不同的表现形式,而对于 rss 来说,同样是 /blogs 的一种特殊的表现形式。所以我们应该使用 /blogs.rss 这样的地址。 于是我们在控制器中使用如下代码: def index @blog_pages, @blogs = paginate :blogs,
rder => 'id DESC' respond_to [...]
第一步 创建一个空的 plugin: script/generate plugin acts_as_fox 这个命令将在 your_app/vendor/plugins 目录下创建一个名为 acts_as_fox 的目录,并且这个目录下会包含一些初试文件。 第二步 编辑 init.rb 文件,加入以下内容: require 'acts_as_fox' 第三步 编辑 lib/acts_as_fox.rb 文件,加入你的代码: require 'active_record' module Foo module Acts #:nodoc: module Fox #:nodoc: def self.included(mod) mod.extend(ClassMethods) end # declare the class level helper methods which # will load the relevant instance methods # defined [...]
ActiveRbac 可以作为你的 Rails 应用的一个插件来实现基于角色的权限控制。Role Based Access Control (RBAC) 安装 active-rbac 目前,active-rbac 正在开发之中,当前最新版本:0.5 只能通过 svn 来获得。 svn co svn://rubyforge.org/var/svn/active-rbac/active-rbac/trunk/plugin vendor/plugins/active-rbac 也有一个运行在 Rails 1.2 的稳定分支:0.4.0 svn co svn://rubyforge.org/var/svn/active-rbac/active_rbac/branches/rails-1.2/active_rbac vendor/plugins/active_rbac

