• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

RubyonRailsTutorial第六章用户模型

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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="[email protected]"
>> user.save

>> user.update_attributes(name:"LilySun",email:"[email protected]") #更新多个属性值
>> 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

鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ruby -- 基础学习(七)时间的内置函数和格式说明发布时间:2022-07-13
下一篇:
搭建RubyonRails开发环境发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap