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::Basebefore_save { email.downcase! }validates :name, presence: true, length: { maximum: 50 }VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-]+(\.[a-z\d\-]+)*\.[a-z]+\z/ivalidate :email, presence: true,format:    { with: VALID_EMAIL_REGEX },uniqueness: { case_sensitive: false }has_secure_passwordvalidates :password, length: { minimum: 6 }
end

轉載于:https://www.cnblogs.com/sunflower627/p/4643341.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/273120.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/273120.shtml
英文地址,請注明出處:http://en.pswp.cn/news/273120.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

java dcl 失效解決_DCL失效原因和解決方案

Java內存模型 在了解Java的同步秘密之前&#xff0c;先來看看JMM(Java Memory Model)。Java被設計為跨平臺的語言&#xff0c;在內存管理上&#xff0c;顯然也要有一個統一的模型。而且Java語言最大的特點就是廢除了指針&#xff0c;把程序員從痛苦中解脫出來&#xff0c;不…

李寧-2015年7月13日-個人文檔

姓名 李寧 日期 2015年7月13日 主要工作及心得 由于我負責服務器端的編寫工作&#xff0c;而各部分的客戶端的操作都要與服務器端通信&#xff0c;所以在今天的調試中&#xff0c;我貫穿于各部分模塊的調試和檢測&#xff0c;主要負責在出現問題…

java.net.unknown_android -------- java.net.UnknownServiceException

最近升級了Android的API版本時 &#xff0c;導致我的網絡請求失敗了&#xff0c;出現了這個錯誤 java.net.UnknownServiceException&#xff0c;這個錯誤&#xff0c;我在網上查到這個主要是由于&#xff0c;我們的OkHttp3會默認使用密文傳輸&#xff0c;而我們的代碼中使用Htt…

無憂開通了博客園博客主頁

無憂開通了博客園博客主頁&#xff0c;今后在這里安家了。 分享一點工作經驗和學習心得&#xff0c;有事沒事常來看看。另一個獨立博客www.wuyouseo.com 轉載于:https://www.cnblogs.com/wuyoublog/p/4646481.html

pythonif語句的多分支使用_Python多分支if語句的使用

注意&#xff1a;if語句代碼是從上往下執行的&#xff0c;當執行到滿足條件的語句時&#xff0c;代碼會停止往下執行注意&#xff1a;if語句后面要加上冒號score int (input("score&#xff1a;"))if score > 90:print("A")elif score > 80:print(&…

Visual Studio下Qt調用IDL

一&#xff0e;簡單介紹&#xff1a; 1.ActiveQt包含QAxContainer和QAxServer組件。 1) QAxContainer允許使用COM對象&#xff0c;并且可以將ActiveX控件嵌入到Qt程序中去。 QAxContainer是有三個類組成的。分別是&#xff1a; QAxObject封裝了COM對象 QAxWidget封裝了ActiveX控…

安裝java過程_Java的安裝過程

記錄一下自己在Windowns下安裝java的過程打開網址后要先登錄&#xff0c;如果沒有號就先注冊&#xff0c;然后才能下載step1&#xff1a;下載JDK(1)將鼠標指向download&#xff0c;會出現如下界面:(2)點擊左上角PopularDownloads下的 Java for Developers進入如下界面&#xff…

HDU2571

早期昨晚&#xff0c;跪&#xff0c;體倦&#xff0c;簡直太CF該。早上起來刷標題。Then,寫python&#xff0c;shell,一天后基礎。 標題或標題中國&#xff5e;&#xff01;思維&#xff1a;本主題開始尋找一個dfs&#xff0c;但是&#xff0c;這個矩陣外觀似太大&#xff0c;d…

dockerfile源碼安裝mysql_docker容器詳解五: dockerfile實現tomcat環境以及源碼安裝mysql...

tomcat上一節講到了dockerfile的基礎&#xff0c;這一次咱們來作一個小的練習首先要了解tomcat安裝的整個過程首先搭建 jdk環境&#xff1a;下載jdk包&#xff0c;解壓以后添加環境變量而后搭建tomcat&#xff1a;下載tomcat包&#xff0c;解壓&#xff0c;修改配置文件到一個工…

pom.xml的配置詳解

<!--可以免費轉載&#xff0c;轉載時請注明出處 http://pengqb.iteye.com 。--><project xmlns"http://maven.apache.org/POM/4.0.0 " xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance " xsi:schemaLocation"http://maven.apache.or…

azkaban 與 java任務_azkaban任務報錯java.lang.RuntimeException: The root scratch dir: /tmp/hive...

azkaban運行任務的時候失敗報錯如下&#xff1a;23-03-2016 08:16:14 CST analyzer-kafka2hdfs_new ERROR - Exception in thread "main" org.apache.hive.service.cli.HiveSQLException: java.lang.RuntimeException: The root scratch dir: /tmp/hive on HDFS shou…

php-fpm的重啟/關閉

php 5.3.3 下的php-fpm 不再支持 php-fpm 以前具有的 /usr/local/php/sbin/php-fpm (start|stop|reload)等命令&#xff0c;需要使用信號控制&#xff1a; INT, TERM 立刻終止QUIT 平滑終止USR1 重新打開日志文件USR2 平滑重載所有worker進程并重新載入配置和二進制模塊 kill -…

SQL server 2008數據庫的備份與還原、分離(轉)

一、SQL數據庫的備份&#xff1a; 1、依次打開 開始菜單 → 程序 → Microsoft SQL Server 2008 → SQL Server Management Studio → 數據庫&#xff1a;Dsideal_school_db既是我們需要備份的學籍數據庫 圖&#xff08;1&#xff09; 2、選擇要備份的數據庫“Dsideal_school_d…

Java做一個動畫效果音量調節_設計與實現一個 ISoundable 接口,該接口具有發聲功能、還能調節音量大小...

[java]代碼庫package experiment6;public interface ISoundable {public void increaseVolume();public void decreaseVolume();public void stopSound();public void playSound();}package experiment6;public class Radio implements ISoundable {public void increaseVolume…

人人都有極客精神

http://www.jisuanke.com/minicourse/59/438 人人公司是一家極為鼓勵極客精神的公司&#xff0c;當有重要的項目需要上線但又時間太緊&#xff0c;甚至需要當天上線的時候&#xff0c;往往會掛起海盜旗開啟電子日期顯示&#xff0c;讓大家可以在對時間有更明確的感知的情況下&a…

WPF入門教程系列十三——依賴屬性(三)

四、 只讀依賴屬性 在以前在對于非WPF的功能來說&#xff0c;對于類的屬性的封裝中&#xff0c;經常會對那些希望暴露給外界只讀操作的字段封裝成只讀屬性&#xff0c;同樣在WPF中也提供了只讀屬性的概念&#xff0c;如一些 WPF控件的依賴屬性是只讀的&#xff0c;它們經常用于…

java 反編譯 類名_java javassist創建類和反編譯類

public class Byte {public static void main(String[] args) throws Exception {//獲得類池ClassPool poolClassPool.getDefault();//創建類CtClass ccpool.makeClass("cn.sxt.in.Emp");//創建屬性CtField f1 CtField.make("private int empno;", cc);Ct…

java生成動態驗證碼_動態生成驗證碼案例

servlet代碼package cn.guizimo.web.servlet;import javax.imageio.ImageIO;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.…

TCP、UDP、HTTP、SOCKET之間的區別

http://blog.csdn.net/magister_feng/article/details/8634518 轉載于:https://www.cnblogs.com/luningning0901/p/4667733.html

特征選擇算法java實現_relief算法特征選擇

1.[文件]Relief算法程序.txt ~ 6KB下載(44)package com.relief.algorithm;import java.util.Random;import java.util.Set;import java.util.ArrayList;import java.util.Collections;import java.util.HashMap;import java.util.List;import java.util.Map;public class Relie…