1. ActiveSupport的笔记
2. ActiveRecord重读的收获
A. Migration的一些东西
ruby script/generate migration xxxx_xxxx
add_column rename_column change_column
add_index remove_index
复合索引 add_index :t, [:col1, :col2], :name=>'index_name'
create_table :table do |t|
end
装载预定义的数据
directory = File.join(File.dirname(__File__), "dev_data")
Fixtures.create_fixtures(directory, "users")
同时,在db/migrate/dev_data下面存在一个users.yml文件
B. boolean 属性和重新定义ActiveRecord::Base中的方法
检查的一个boolean属性应该通过user.superuser?
带出问号。如果要修改,那么可以这么定义:
class User < ActiveRecord::Base
def superuser?
self.superuser == 'J'
end
end
C. id
将数据id和数据内容分开。
D. 四项基本操作 CRUD
需要注意类方法和实例方法并举。
D1. new create
D2. find(id)如果查不到记录,就会抛出RecordNotFound异常。
id可以传入一个list,可以是用逗号分隔的,也可以是一个数组,此时即使只有一条查不到依旧抛出异常。
原因在于DHH认为根据主键查询是你事先知道此特定记录,所以没有就抛异常。
但如果传入:first或者:all,那么就不会抛出,而是返回nil或者空数组。
:conditions输入的东西最好不是直接在""里面使用#{},即不使用直接生成的sql string,而是使用sql 占位符。
占位符又包括问号占位符和 命名占位符两种。
使用占位符时,conditions指向数组,数组内第一个元素是string,其后是一个hash。
:order :group
D3. update_attributes(params[:order])
save save!
D4. 类方法delete, delete_all, destroy, destroy_all
实例方法destroy
delete不会触发回调功能和验证。
E. 表间关联
belongs_to 包含外键的表(模型),就要使用belong_to。
可以把belongs_to理解为reference.