zoukankan      html  css  js  c++  java
  • Ruby on Rails Tutorial 第六章 用户模型

    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-zd-]+(.[a-zd-]+)*.[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
  • 相关阅读:
    Spark Mllib里的向量标签概念、构成(图文详解)
    Spark Mllib里的本地向量集(密集型数据集和稀疏型数据集概念、构成)(图文详解)
    Spark Mllib里的Mllib基本数据类型(图文详解)
    [转]Debugging into .NET Core源代码的两种方式
    [转]在ASP.NET Core使用Middleware模拟Custom Error Page功能
    [转]Asp.net MVC中的ViewData与ViewBag
    [转]细说 ASP.NET Cache 及其高级用法
    [转]分布式中使用Redis实现Session共享(二)
    [转]Asp.net Core 使用Redis存储Session
    [转]JS跨域解决方式 window.name
  • 原文地址:https://www.cnblogs.com/sunflower627/p/4643341.html
Copyright © 2011-2022 走看看