今日任务
总结
- 数据库迁移
- 生成User模型
rails generate model User name:string email:string
invoke active_record
create db/migrate/20160523010738_create_users.rb
create app/models/user.rb invoke test_unit
create test/models/user_test.rb
create test/fixtures/users.yml
注意:控制器名字是复数,模型名字是单数
- 生成迁移文件
rails generate migration add_index_to_users_emai
rails generate migration CreateUsers name:string
...
如果迁移的名字是“AddXXXToYYY”或者“RemoveXXXFromYYY”这种格式,而且后面跟着一个字段名和类型列表,那么迁移中会生成合适的 add_column 或 remove_column 语句。详细信息
- 执行迁移
rails db:migrate
- 撤销迁移
rails db:rollback
- 数据库
- 数据库存储
要完成存储功能,需要先执行new,在执行save。或者直接使用create
````
user = User.new(name: "k",email: "12@12.com")
user.save
user = User.create(name: "k",email: "12@12.com")
user.valid? #判断用户是否有效
user.destroy #删除用户
>_create_的逆操作_destroy_。这两种操作都会返回对象,并且destroy销毁的对象还存储在内存中。只是数据库里面的销毁了。
+ 查找
User.find(1)
User.find_by(name: "name")
User.first
User.all #返回一个ActiveRecord::Relation实例,包含所有用户
+ 更新
第一种
user = User.first
user.name = "kakarot"
user.save
user.reload
第二种
user.update_attributes(name: "Dude", email: "dude@abides.org")
user.update_attribute(:name, "Duse")
+ 测试
>暂时没明白。。。
+ 数据验证 [详细信息](http://guides.ruby-china.org/active_record_validations.html)
before_save { email.downcase! }
存储前全部改为小写
validates :name, presence: true, length: { maximum: 50 }
限制name不能为空,不能大于50
VALID_EMAIL_REGEX = /\A[\w+-.]+@[a-z\d-.]+.[a-z]+\z/i
邮件匹配正则表达式
validates :email, presence: true, length: { maximum: 255 },
format: { with: VALID_EMAIL_REGEX }, uniqueness: {
case_sensitive: false }
邮件不为空,不大于255,匹配正则,唯一且不区分大小写。
网友评论