1、用户模型
(1)数据库迁移
Rails默认使用关系数据库存储数据,数据库中的表有数据行组成,每一行都有相应的列,对应数据属性。把列名命名为相应的名字后,ActiveRecord会自动把他们识别为用户对象的属性。

$ rails generate controller Users new #生成用户控制器和new动作,控制器名是复述Users
$ rails generate model User name:string email:string #生成用户模型,模型名是单数User
$ bundle exec rake db:migrate #向上迁移
$ bundle exec rake db:rollback #向下迁移

迁移是一种修改数据库结构的方式,可以根据需求递进修改数据模型。执行generte命令后会自动为用户模型创建迁移,这个迁移的作用是创建一个users表以及name和email两个列。

(2)模型文件
A:创建用户对象

>> user=User.new(name:"AmySun",email:"12***@**.com") #创建
>> user.save #保存

上面两步等价于下面一步,即把创建和保存合成一步完成:

>> foo=User.create(name:"AmySun",email:"12***@**.com")
>> foo.destroy #create的逆操作

B:查找用户对象

>> User.find(1) #根据用户ID查找
>> User.find_by(email:"12***@**.com") #通过属性查找,如果用户数量过多,使用find_by的效率不高
>> User.first #返回数据库中的第一个用户
>> User.all #返回一个ActiveRecord:Relation实例,其实这是一个数组,包含数据库中的所有用户

C:更新用户对象

>> user.email="aaa@aaa.com"
>> user.save

>> user.update_attributes(name:"LilySun",email:"bbb@bbb.com") #更新多个属性值
>> user.update_attribute(name:"LilySun") #更新单个属性值

2、用户数据验证
几种常用的数据验证:存在性、长度、格式和唯一性

$ rails generate migration add_index_to_users_email #为User的email属性添加索引
$ bundle exec rake db:migrate

添加了用户验证的User类的代码如下:

class User < ActiveRecord::Base
before_save { email.downcase! }
validates :name, presence: true, length: { maximum: 50 }
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/i
validate :email, presence: true,
format: { with: VALID_EMAIL_REGEX },
uniqueness: { case_sensitive: false }
has_secure_password
validates :password, length: { minimum: 6 }
end

Ruby on Rails Tutorial 第六章 用户模型的更多相关文章

  1. Ruby on Rails Tutorial 第五章 完善布局

    本章目标:局部视图.Rails路由.Asset Pipeline.Sass1.Bootstrap是Twitter开发的开源Web设计框架mockup是网页构思图,在web领域经常称之为“线框图”,用于 ...

  2. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 类

    Ruby和其他面向对象的语言一样,使用类来组织方法,然后实例化类,创建对象.1.构造方法使用双引号是字符串的字面构造方法,也可以使用“具名构造方法”,即在类名上调用new方法 >> s=& ...

  3. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 字符串

    1.辅助方法 2.字符串 输入“irb”进入Ruby命令行开发环境,控制器的启动方法是在命令行中执行“rails console”. (1)字符串连接 >>"foo"+ ...

  4. Ruby on Rails Tutorial 第三章 静态页面

    1.生成静态页面 $ rails generate controller StaticPages home help    #生成主页和帮助页面的路由.控制器及静态页面 $ rails destroy ...

  5. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 其他数据类型(二)

    1.方法 定义如下所示: def string_message(str='') if str.empty? "It's an empty string!" else "T ...

  6. Ruby on Rails Tutorial读书笔记-1

    只是怕忘了命令,全部撸一次,记个大概.. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 安装Ruby之前,先要安装RVM: curl -L https://get.rvm.io | bas ...

  7. Ruby on Rails Tutorial 第2版 学习笔记

    Ruby on Rails Tutorial 第2版 在线阅读:http://railstutorial-china.org/ 英文版:http://ruby.railstutorial.org/ru ...

  8. (转)iOS Wow体验 - 第六章 - 交互模型与创新的产品概念(2)

    本文是<iOS Wow Factor:Apps and UX Design Techniques for iPhone and iPad>第六章译文精选的第二部分,其余章节将陆续放出.上一 ...

  9. Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST

    说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...

随机推荐

  1. 《Python 学习手册4th》 第九章 元组、文件及其他

    ''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书) “重点 ...

  2. [selenium webdriver Java]元素定位——findElement/findElements

    策略 语法 语法 描述 By id driver.findElement(By.id()) driver.findElements(By.id()) 通过id属性定位元素 By name driver ...

  3. 基本输入输出系统BIOS---键盘输入

    基本输入输出系统BIOS概述 硬盘操作系统DOS建立在BIOS的基础上,通过BIOS操纵硬件,例如DOS调用BIOS显示I/O程序完成输入显示,调用打印I/O完成打印输出 通常应用程序应该调用DOS提 ...

  4. 使用Ant发布hadoop代码到服务器

    首先,搭建Ant环境: 1.1.下载antzip包,可以直接从官网下,也可以从我的csdn账号下载,这里我使用的Ant版本是:apache-ant-1.8.4-bin CSDN Ant 所需jar包下 ...

  5. java的动态代理机制

    前几天看到java的动态代理机制,不知道是啥玩意,然后看了看.死活不知道 invoke(Object proxy, Method m, Object[] args)种的proxy是个什么东西,放在这里 ...

  6. [转]Ubuntu下GitHub的使用

    转自Pythoner 本文将对Ubuntu下Git的安装,以及如何连接GitHub进行讲解. 1.环境 OS: Ubuntu13.04 64bitsGit: 1.8.1.2 2.Git安装 执行如下命 ...

  7. Android与Mysql服务器通信

    需求:在手机端读取蓝牙传输过来的数据,然后发送到mysql 安卓前期版本可以直接使用mysql connector, 现在只能通过访问url传递数据了. 服务器端写php脚本,接受发送过来的url请求 ...

  8. 第二百六十六天 how can I 坚持

    有些小郁闷,上班没事干,技术.要买房,还要结婚,买了房哪还有彩礼钱,还得借钱,愁人. 该咋办,毕梦琪. 哎.今天还和程秀通说好的去看房呢,整天犹豫不定的.烦. 今天平安夜啊.吃了个苹果,一生平平安安, ...

  9. Spark生态之Spark Core

  10. 用一个例子学习CSS的伪类元素

    CSS伪类元素是一个非常酷的东西!首先我们理解一下它,:before :after 伪类元素,也就是虚假的元素.它可以插入在元素的前面或者后面,而在HTML文档结构中,它却是不存在的,因为Js是无法通 ...