随笔分类 -  ruby on rails

1 2 下一页
RailsCasts中文版,#16 Virtual Attributes 虚拟属性
摘要:下面是一个用户注册表单,可以输入名、姓和密码。 数据库中也定义了这些字段: create_table "users", :force => true do |t| t.string "first_name" t.string "last_name" t.string "password" end但是,如果我们想改变用户界面,在上面只显示全名f... 阅读全文
posted @ 2012-12-09 13:44 边晓宇 阅读(1223) 评论(0) 推荐(0)
RailsCasts中文版,#15 Fun with Find Conditions 使用hash为查询条件以便生成正确语法的SQL查询
摘要:这次我们来讨论一下关于find方法查询条件的话题。以下是Rails Console输出的SQL查询语句。对应的动作是查找所有优先级为3的未完成任务。 >>Task.count(:all,:conditions=>["complete=? and priority=?,false,3])=>2对应的SQL查询是SELECT count(*) AS count_all FROM tasks WHER... 阅读全文
posted @ 2012-12-09 09:36 边晓宇 阅读(896) 评论(0) 推荐(0)
RailsCasts中文版,#14 Performing Calculations on Models 利用模型自带的统计功能
摘要:你知道吗?ActiveRecord预制了好多对模型中数据进行统计计算的方法。我们拿Task类为例。类中有一个标明任务优先级的字段priority。打开Rails Console,查看操作的回显,其中SQL语句是方法在后台执行的查询。 查询第一个任务的优先级: >> Task.first.priority=>4对应的SQL查询是SELECT * FROM "tasks" LIMIT 1;使用预置... 阅读全文
posted @ 2012-12-08 01:13 边晓宇 阅读(977) 评论(0) 推荐(0)
RailsCasts中文版,#12 Refactoring User Name Part 3 重构实战3
摘要:在重构实战2和重构实战1里,我们讨论了与重构、测试有关的话题。截止上一篇结束时,完成了对User类的重构,但是测试用例代码还有些乱。让我们看看如何清理一下。 require 'test_helper' class UserTest < ActiveSupport::TestCase test "full name without middle initial" do user ... 阅读全文
posted @ 2012-11-26 23:26 边晓宇 阅读(980) 评论(0) 推荐(0)
RailsCasts中文版,#11 Refactoring User Name Part 2 重构实战2
摘要:在上一篇《RailsCasts中文版,#10 Refactoring User Name Part 1 重构实战1》我们讨论了重构,并演示了一个通过将代码移动到模型中以达到去除冗余的重构实例。不过这段代码依然还有优化的余地。 class User < ActiveRecord::Base def full_name name = first_name + ' ' name += "... 阅读全文
posted @ 2012-11-25 21:05 边晓宇 阅读(1124) 评论(0) 推荐(1)
RailsCasts中文版,#10 Refactoring User Name Part 1 重构实战1
摘要:从这一集开始,我们一起探讨一下关于重构的话题。重构是指在不改变软件功能的前提下对代码进行优化,以达到去除冗余代码、提高代码可读性及可维护性的的目的。 下面页面是一个用户列表,点击用户名后显示用户资料。需要注意的是,有些用户有中间名(middle name)有些则没有。 浏览器中显示的列表页及用户资料页. 先看看列表页的代码: <h1>Users</h1><ul><% for user ... 阅读全文
posted @ 2012-11-25 12:00 边晓宇 阅读(947) 评论(0) 推荐(0)
RailsCasts中文版,#9 Filtering Sensitive Logs 遮盖日志中记录的敏感信息
摘要:这是一个用户注册页面,填入用户名和密码按确认提交。 查看后台日志的话,能够发现所有页面提交的参数都是以明文方式保存在日志中的。 Processing UsersController#create (for 127.0.0.1 at 2009-01-02 10:13:13) [POST]Parameters: {"user"=>{"name"=>"eifion", "password_con... 阅读全文
posted @ 2012-11-24 22:19 边晓宇 阅读(1318) 评论(0) 推荐(0)
RailsCasts中文版,#8 Layouts and content_for 使用content_for方法定制布局文件
摘要:下面分别是全局的布局文件application.rhtml及index Action页面定义: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html> <head> <title>Todo List</titl... 阅读全文
posted @ 2012-11-24 09:21 边晓宇 阅读(936) 评论(0) 推荐(0)
RailsCasts中文版,#7 All About Layouts 页面关联布局文件
摘要:这次咱们聊聊页面布局文件。布局文件其实也是一个页面,用来定义一些公共的或者框架的页面结构。普通的页面文件再嵌入到布局文件预留的空间中来形成整个页面的样子。布局文件是可以在各个页面之间公用的公共资源。全局范围布局文件下面的页面列出所有的项目名称<h2>Projects</h2><ul><% for project in @projects %> <li><%= project.name %></li><% end %></ul>这是一个普通页面:比如说,我们想为这个站点的每一个页面都增加一 阅读全文
posted @ 2012-11-21 20:10 边晓宇 阅读(853) 评论(1) 推荐(1)
RailsCasts中文版,#6 Shortcut Blocks with Symbol to_proc 通过to_proc为代码块逻辑命名
摘要:下面代码find方法中这种看起来奇怪的语法,一个&符号后面跟着一个名字,叫做to_proc。是Rails对Ruby的一点功能扩充。 class Project < ActiveRecord::Base has_many :tasks def self.all_names find(:all).collect(&:name) endend我们通过Rails Console下的一个例子来... 阅读全文
posted @ 2012-11-21 07:08 边晓宇 阅读(1072) 评论(0) 推荐(1)
RailsCasts中文版,#5 Using with_scope 对find方法限定作用域
摘要:这次,我们讨论一下with_scope方法。下面的Task中定义了一个返回所有未完成任务的类方法find_incomplete。 class Task < ActiveRecord::Base belongs_to :project def self.find_incomplete find_all_by_complete(false, :order => 'created_at DE... 阅读全文
posted @ 2012-11-20 22:09 边晓宇 阅读(1000) 评论(0) 推荐(1)
RailsCasts中文版,#4 Move Find into Model 将查询方法从控制器上移至模型
摘要:这个例子是对Task调用find命令进行查询操作,查询所有未完成的任务并按照创建时间降序排列。如下所示: class TaskController < ApplicationController def index @tasks = Task.find_all_by_complete(:false, :order => "created_at DESC") endend如果控制器中有好... 阅读全文
posted @ 2012-11-20 07:51 边晓宇 阅读(993) 评论(0) 推荐(1)
RailsCasts中文版,#3 Find Through Association 使用级联查询
摘要:这个例子中我们有一个Project类,其中通过has_many方法定义包含多个Task: class Project < ActiveRecord::Base has_many :tasksend在Task任务类中通过belongs_to定义它属于一个Project:class Task < ActiveRecord::Base belongs_to :projectend项目类的控制器P... 阅读全文
posted @ 2012-11-19 21:59 边晓宇 阅读(837) 评论(0) 推荐(0)
RailsCasts中文版,#2 Dynamic find_by Methods 使用动态的find_by方法进行查找操作
摘要:下面给大家演示一个Rails中使用Find方法更加优雅的方式。例子中Task类有一个属性complete表明任务是否已经完成(complete字段是false意味着未完成),incomplete和last_incomplete方法分别返回所有未完成的和最后一个未完成的任务。class TaskController < ApplicationController def incomplete @tasks = Task.find(:all, :conditions => ['complete = ?', false]) end def last_incomplete 阅读全文
posted @ 2012-11-18 22:15 边晓宇 阅读(959) 评论(0) 推荐(1)
RailsCasts中文版,#1 Caching with Instance Variables 缓存实例变量
摘要:class ApplicationController < ActionController::Base def current_user User.find(session[:user_id]) endend这是一个在Action中的场景,上面的代码调用User的find方法传入会话中的user_id从数据库中读取当前登陆的用户信息。如果这个方法将会在一次页面请求中重复调用多次,将意味... 阅读全文
posted @ 2012-11-18 22:10 边晓宇 阅读(1012) 评论(0) 推荐(1)
Ruby on Rails,使用gem安装rails,付解决It seems your ruby installation is missing psych (for YAML output).
摘要:在前面,我们学会了使用RVM的作用和利用RVM安装ruby并管理其版本的方法。 下一步就是使用ruby中的gem工具安装rails(rails也是ruby中的gem),关于gem是什么请移步《关于rubygem你需要知道的》 先使用rvm将ruby切换至需要的版本(我当前用的是1.9.3),因为rails将会被安装在当前使用的ruby版本目录中。不会的请移步《Ruby on Rails,在ub... 阅读全文
posted @ 2012-11-15 00:42 边晓宇 阅读(3395) 评论(1) 推荐(1)
Ruby on Rails,在ubuntu中安装及使用rvm管理ruby版本
摘要:RVM的主要作用是方便的管理系统中的多个ruby版本而不至于混乱。 我们来看看如何安装RVM,我使用的ubuntu12.04LTS。 准备工作 后面需要使用curl,用dpkg -s curl命令检查一下系统中有没有安装 abbuggy@abbuggy-ubuntu:~$ dpkg -s curlPackage: curlStatus: install ok installedPrio... 阅读全文
posted @ 2012-11-11 22:14 边晓宇 阅读(2573) 评论(0) 推荐(1)
Ruby on Rails,链式调用order,limit,offset方法对条件查询结果进行整理
摘要:在《Ruby on Rails,使用where方法对持久化对象进行条件查询》我们学习到可以通过where方法进行条件查询操作返回对象列表。还有三个方法可以对返回的列表进行操作以便得到我们想要的结果集。order方法对结果进行排序,比如将返回的对象按照名称升序排列、按照创建时间降序排列等。limit方法对结果的数量进行限制,比如数据库中有成千上万的注册用户,我们不希望一下子把这些用户的信息都取出来,而是希望将这些用户分页显示,点击下一页才进行下一次读取。limit方法读取第一页的N个用户,第二页需要返回的用户都需要将前面的N记录跳过,这里就用到了offset方法。所以说,order;limit; 阅读全文
posted @ 2012-11-11 22:03 边晓宇 阅读(1898) 评论(0) 推荐(0)
Ruby on Rails,使用where方法对持久化对象进行条件查询
摘要:在《Ruby on Rails,使用find方法加载持久化对象》一文中,我们使用find系列方法进行对象查询。在新版本的Rails中,都推荐使用where而不是find方法进行条件查询了。 语法上和find条件查询差不多,应该说更简洁一点,比如我想找到position是2的对象。 irb(main):090:0> Subject.where("position=?","2").order("n... 阅读全文
posted @ 2012-10-21 02:14 边晓宇 阅读(3414) 评论(0) 推荐(0)
Ruby on Rails,使用find方法加载持久化对象
摘要:前文《Ruby on Rails,使用new和create创建ActiveRecord对象及他们之间的区别》,《Ruby on Rails,使用save和update_attributes更新持久化的ActiveRecord对象》,《Ruby on Rails,使用destroy方法删除ActiveRecord对象》中,分别介绍了向数据库中创建、更新、删除对象的方法。在应用实践中,从数据库查询对象的机会要远远高于创建、修改、删除的机会。下面来看看如何通过find方法加载ActiveRecord对象。之前我们就已经使用过类似于Subject.find(1)的方法从数据库中加载Subject对象了 阅读全文
posted @ 2012-10-20 19:33 边晓宇 阅读(2182) 评论(0) 推荐(0)

1 2 下一页