本月博客排行
-
第1名
龙儿筝 -
第2名
lerf -
第3名
paulwong - fantaxy025025
- johnsmith9th
- xiangjie88
- zysnba
年度博客排行
-
第1名
青否云后端云 -
第2名
宏天软件 -
第3名
gashero - wy_19921005
- vipbooks
- benladeng5225
- e_e
- wallimn
- javashop
- ranbuijj
- fantaxy025025
- gengyun12
- jickcai
- zw7534313
- qepwqnp
- 解宜然
- ssydxa219
- zysnba
- sam123456gz
- sichunli_030
- tanling8334
- arpenker
- gaojingsong
- xpenxpen
- kaizi1992
- jh108020
- wiseboyloves
- ganxueyun
- xyuma
- xiangjie88
- wangchen.ily
- Jameslyy
- 龙儿筝
- luxurioust
- mengjichen
- lemonhandsome
- jbosscn
- zxq_2017
- nychen2000
- lzyfn123
- forestqqqq
- wjianwei666
- ajinn
- siemens800
- zhanjia
- Xeden
- hanbaohong
- java-007
- 喧嚣求静
- kingwell.leng
最新文章列表
Rails源码研究之ActiveRecord:五,Callbacks
Callbacks相关的源码在callbacks.rb文件里:
module ActiveRecord
module Callbacks
CALLBACKS = %w(
after_find after_initialize before_save after_save before_create after_create before_update after_u ...
Rails源码研究之ActiveRecord:四,Validations
Validations相关的源码全在validations.rb文件里:
module ActiveRecord
class Errors
include Enumerable
@@default_error_messages = {
:inclusion => "is not included in the list",
...
关于Ruby Aop的小试验
Ruby 的Metaclass功能确实强大,
我仿照Rail的处理的做了一个Aop 的小试验,代码如下:
ruby 代码
# aop_test.rb
# 2007年6月18日
#
module AopAspects
def log_method(*args)
puts "log here" ...
Rails源码研究之ActiveRecord:三,Transactions
这次我们分析一下Rails的事务支持
1,Rails默认将父子关系的表的save()和destroy()包装在一个事务里(见AWDWR一书的Transactions)
这保证了父子保存和删除的原子性,即ActiveRecord是级联保存和级联删除的,有源码为证
transactions.rb:
module ActiveRecord
module Transactions
def ...
Rails源码研究之ActiveRecord:二,Associations
今天学习一下ActiveRecord的Associations相关的源码,即了解一下我们常用的has_many、has_one、belongs_to、has_and_belongs_to_many的原理
1,activerecord-1.15.3\lib\active_record\associations.rb:
require 'active_record/associations/ass ...
Rails源码研究之ActiveRecord:一,基本架构、CRUD封装与数据库连接
Rails的ORM框架ActiveRecord是马大叔的ActiveRecord模式的实现+associations+SingleTableInheritance
ActiveRecord的作者也是Rails的作者--David Heinemeier Hansson
ActiveRecord的key features:
1,零Meta Data,不需要XML配置文件
2,Database Suppo ...
Ruby on Rails 的检验方法(Validation Helpers)大全 (转)
From Captain Zhan's Blog [原文链接]
可以自定义validate(), 这个方法在每次保存数据时都会被调用.
如:
def validate
if name.blank? && email.blank?
errors.add_to_base("You must specify a name or an email address") ...
rails bug 如果表字段有名字为type的bug
今天在做开发的时候遇到一个莫名奇妙的问题,后来才发现是表中有字段名字叫type引起的,还是在http://dev.rubyonrails.org/ticket/7998 上发现原来是rails的 ...
郁闷的下午,郁闷的RMagick
初学ror一星期,过程中一直相安无事,但是昨天被RMagick浪费了我两小时,今天三个小时又被RMagick无情的浪费掉了,贴在这耽误大家一些时间帮忙找找原因,
1、用webrick运行的时候,只要我在controller中加入
ruby 代码
require 'RMagick'
include Magick
此时只要执行任何action(也就是装载了co ...
读Ruby for Rails的思考之method_missing
Ruby里方法的查找顺序是本类=>本类include的模块=>父类=>父类include的模块...
而当最终还是没有找到该方法时,会触发内建的method_missing方法的执行
默认的method_missing会触发异常,而我们可以通过override method_missing方法来提供一些特性
比如Rails的ActiveRecord,User.find_by_nam ...
每天一剂Rails良药之acts_as_ferret
Ferret是Ruby的文本搜索引擎,它基于Apache Lucene
安装Ferret非常简单:
gem install ferret
Ferret是一堆C代码的Ruby代码封装,Ferret是针对Ruby的而不是RoR的
而Acts As Ferret则是针对RoR的
我们有两种方式安装Acts As Ferret:
1,以gem方式安装
gem install acts_as ...
每天一剂Rails良药之tztime
以前我们这样使用TimeZone:
class TasksController < ApplicationController
def create
task = account.tasks.build(params[:task])
task.alert_at = current_user.time_zone.local_to_utc(task.alert_at) ...
每天一剂Rails良药之token_generator
这个插件让我们给使用它的当前class添加一个使用MD5生成的token
class Invitation < ActiveRecord::Base
include TokenGenerator
before_create :set_token
end
class ImperialInvitation < ActiveRecord::Base
include ...
find_by_randomize -- 讓ActiveRecord可以亂數取資料
請在model內加入:def self.find_by_randomize ids = self.find(:all, :select => [id]) self.find(ids[rand(ids.size)]["id"].to_i)end這樣一來,就可以取亂數選取資料了!請參考這篇:為你的 Active Record 做出多采多姿的 find當然囉.. thegii ...
单表单提交 一次能修改多个关联数据库表吗?
单表单提交 一次能修改多个关联数据库表吗?
一个页面表单涉及2个数据库表是,提交的时候怎么同时修改2个数据库表。
比如:
表1:people:
id
name
age
表2:mobile:
id
phonenum
people_id
表1和表2之间的关系:
people.rb
class People < ActiveRecord::Base
has_many :mobiles
...
中文Scaffold
Rails1.2以后有一个scaffold_resource的generator,那些column在view里都展开了。相比老的scaffold要管用很多(老的scaffold基本上是个花瓶功能),开发可以在这个生成结果的基础上开展。
我在用rails做一个中文项目。每次生成scaffold_resource生成代码以后,都要去手工把Edit,View等等链接改成中文,还有那些column的名字, ...
Rails Cache
今天插一脚,介绍一下Rails的缓存机制以及memcached的使用
Rails的Cache分四种:
1,Page Cache - Fastest
2,Action Cache - Next Fastest
3,Fragment Cache - Least Fastest
4,ActiveRecord Cache - Only available in Edge Rails
下面一一介绍上面四种Ca ...
ruby on rails 文章链接
1:用策略模式替换继承。链接的文章,就是用继承替换了单表继承:
http://www.last100meters.com/2007/6/1/clean-code-tutorial-use-a-strategy-pattern-instead-of-inheritance
2:介绍回调callback
http://recursive2.com/2007/6/2/working-with-activ ...
如何为model数据的验证写单元测试
假设我们有一个model类Project,它的字段name是必须是唯一。它的单元测试可以如下:
def test_project_name_should_be_uniqure
project = Project.create!(:name => 'my project')
assert_raises(ActiveRecord::RecordInvalid){
...
Couldn t find XXX without an ID
ActiveRecord::RecordNotFound in BookController#show
Couldn't find Book without an ID
原因是<%= link_to book.title,:action=>"show",:id=>book.id %>
中的id前需要加冒号.