本月博客排行
-
第1名
kaizi1992 -
第2名
arpenker -
第3名
wy_19921005 - hanbaohong
- jh108020
年度博客排行
-
第1名
龙儿筝 -
第2名
宏天软件 -
第3名
青否云后端云 - vipbooks
- wy_19921005
- benladeng5225
- fantaxy025025
- e_e
- kaizi1992
- tanling8334
- arpenker
- sam123456gz
- javashop
- zysnba
- xiangjie88
- lemonhandsome
- wallimn
- ganxueyun
- Xeden
- zhanjia
- xyuma
- wangchen.ily
- jh108020
- johnsmith9th
- zxq_2017
- jbosscn
- forestqqqq
- daizj
- ajinn
- xpenxpen
- 喧嚣求静
- kingwell.leng
- silverend
- kristy_yy
- lchb139128
- lich0079
- jveqi
- lzyfn123
- java-007
- sunj
- yeluowuhen
- lerf
- xiaoxinye
- flashsing123
- zhangjijun
- lxguy
- bosschen
- lyndon.lin
- sunnylocus
- chenqisdfx
最新文章列表
module中的函数重定义之后,如何re-mixins?
需要在页面上输出每次require的调用时间。于是修改了 rails中的一个 方法,方法是module的一部分 。但是 如何remixins,却是大问题了。
或者另外一个方法直接修改 mixins以后的代码。 但是嵌套了多个module之后, 不清楚怎么去修改这个方法了。
以下是代码
module ActionController #:nodoc:
module Benchm ...
使用attachment_fu上传图像
按照说明一步一步来,首先声明了一个model,用来保存图片信息,顺便在controller中实现图片上传,显示等功能,定义的model如下:
ruby 代码
class Upfile < ActiveRecord::Base
has_attachment :content_type=>:image,:max_size=>2.megabyte,:thu ...
beast1.0 解读(二)
简单的分析一下,发觉有了文档什么问题都不是问题!
model代码中我发觉user.rb代码比较丰富多彩一些,那就拿user.rb拿分析一下.
ruby 代码
require 'digest/sha1' #分析:引入Hash加密算法
class User < ActiveRecord::Base
has_many :moderator ...
rails中使用tzinfo-timezone实现各时区时间转换
结合http://marklunds.com/articles/one/311
和手册,完整的一个实现各时区时间转换的一个例子:
首先保证服务器安装tzinfo插件
gem install tzinfo
1、配置环境
ruby 代码 ActiveRecord::Base.default_timezone = :utc
2、相应的类中
ruby 代码
require 'tz ...
在selenium测试中使用ActiveRecord
ActiveRecord是rails的框架,我们在selenium测试中肯定需要初始化数据或者清理数据库数据以保证各个测试之间的独立性,可以这样用ActiveRecord来初始化或清理数据库
ruby 代码
require 'test/unit'
require 'selenium'
require 'active_record'
ActiveRe ...
改变rails的默认to_xml方法
to_xml方法默认把"_"转成"-",flex里面使用起来很麻烦。所以在Application.rb里面加入下面的代码,让他不要这么干。
module ActiveSupport #:nodoc:
module CoreExtensions #:nodoc:
module Hash #:nodoc:
module Convers ...
每天一条Ruby小道之Symbol
在Ruby中symbol是Symbol类的实例。symbol的语法为一个冒号后面接一个标识符。
symbol就像一个字符串,它表示了一个字符序列。它不像字符串,每个symbol只有一个实例(和Fixnum一样)。因此,有一个内存或
性能问题需要弄清楚。例如,在下面的代码中,"foo"字符串以三个单独的对象存储在内存中,但是symbol :foo作为一个单独的对
象存储(被引用了 ...
db:migrate简明指南
首先,确保你已经配置好了database.yml,假设我们要创建一个名为person的model,现在我们可以通过db:migrate任务来避免直接使用SQL来操作数据库:
$ script/generate model person name:string age:int
这条命令将在你的db/migrate目录下创建001_create_people.rb文件,我们可以通过它来创建people( ...
method_missing了解10件事
我可不是标题党,题目是原作者起的
10 things you should know about method_missing
1,method_missing是一个Ruby内核方法
2,Rails使用method_missing实现了一些最惊人的magic。当你请求Model的find_by_freaky_column_name方法时,Model会给予
响应,因为ActiveRecord::B ...
Rails宝典之第六十二式: Hacking ActiveRecord
看下面一个场景:
# product.rb
class Product < ActiveRecord::Base
validates_presence_of :price
def self.find_ordered
find(:all, : order => 'name')
end
end
# product_test.rb
require ...
Rails宝典之第六十式: 不用fixtures的测试
严重依赖fixtures的测试会变得十分脆弱,并且很难维护。
让我们来看看怎样写不使用fixtures的测试。
看cart/line_item的例子:
class Cart < ActiveRecord::Base
has_many :line_items
def total_weight
line_items.to_s.sum(&:weight)
...
Rails宝典之第五十九式: optimistic locking
Rails里的Magic Column Names
当两个用户尝试同时更新同一record时,其中一个用户的更新将被覆盖,我们可以使用乐观锁来解决这个问题。
首先给Model添加一个称为lock_version的column;
# migrations/011_add_products_lock_version.rb
add_column :products, :lock_version, ...
Rails宝典之第五十七式: Select or Create
看一个选择Category或从text_field创建新Category的例子:
<!-- views/products/_form.rhtml -->
<p>
<label for="product_category_id">Category:</lable><br/>
<%= f.collec ...
Rails宝典之第五十四式: ruby-debug
介绍下使用ruby-debug来调试Rails程序
安装ruby-debug:
sudo gem install ruby-debug -y
修改environment.rb:
require 'ruby-debug'
我们在需要调试的代码里使用ruby-debug:
class Task < ActiveRecord::Base
belongs_to :pro ...
Rails宝典之第五十三式: Handling exceptions
当我们访问错误的url时,development模式下会显示错误栈页面
但如果我们想测试production模式下的出错页面,我们应该怎样做呢?
可以发现,development.rb和production.rb里分别设置了config.action_controller.consider_all_requests_local为
true和false,当请求被当作本地请求时,出错页面会显示错误栈而 ...
Rails宝典之第三十三式: make a plugin
续上式。
我们可以将Task类里的due_at_string这个虚拟属性的生成做成一个plugin:
ruby script/generate plugin stringify_time
这将在vendor/plugins目录生成如下文件:
vendor
plugins
stringify_time
---init.rb
---install.rb
lib
-- ...
Rails宝典之第三十二式: text_field time
一般编辑时间时我们使用datetime_select:
<%= f.datetime_select :due_at %>
如果我们希望用text_field来编辑时间,可以这样做:
<% f.text_field :due_at_string %>
修改Task类:
class Task < ActiveRecord::Base
def due ...
rails安装的几种方式
总结一下rails安装的几种方式,所有内容均以 http://www.rubyonrails.org/down 为准。
当然,第一步是安装ruby,略。
一、常规方式:远程gem
gem install rails --include-dependencies
安装时需要联网。
二、 本地gem方式
仔细分析远程gem方式的安装,发现它首先下载并安装其依赖的其它gem包,它们依次是:
acti ...
Rails宝典之第二十六式: 防止Hacker入侵
假设我们的users表如下:
create_table "users", :force => true do |t|
t.column "name", :string
t.column "admin", :boolean, :default => false, :null => false
end
...
Rails宝典之第二十五式: Sql injection
Sql injection是老问题,对如下查询:
def index
@tasks = Task.find(:all, :conditions => "name LIKE '%#{params[:query]}%'")
end
当用户输入的query条件加上单引号时很容易通过sql injection来攻击我们的Rails程序
而我们使用如下查询方式就可以避 ...