[057]Ruby on Rails學(xué)習(xí)筆記(8)-Active Record學(xué)習(xí)基礎(chǔ)

零.前言

在操作Ruby on rails時(shí)按灶,總會(huì)遇到資料的的問(wèn)題寿桨,有時(shí)還會(huì)出現(xiàn)active record的顯示錯(cuò)誤汉柒,心裡總是很納悶active record到底是啥?

與資料庫(kù)之間的關(guān)係為何春叫、如何把這觀念給實(shí)作出來(lái)肩钠,所以才產(chǎn)生這篇的學(xué)習(xí)筆記。

以下會(huì)分成五個(gè)部分依序來(lái)理解暂殖,active record的概念价匠。


一、物件關(guān)係映射與active record是啥呛每?如何應(yīng)用在rails中踩窖?

首先,active record是MVC的M晨横,model的意味洋腮,表現(xiàn)商業(yè)邏輯與資料的層級(jí),負(fù)責(zé)新增與操作需要存放在資料庫(kù)的長(zhǎng)久資料手形,

而active record本身是物件關(guān)係映射系統(tǒng)的一種描述啥供。

active record模式中,物件將擁有持久化的行為與資料库糠,可以確保存取資料是物件的一部份伙狐,進(jìn)而教導(dǎo)使用者如何寫(xiě)入與寫(xiě)出物件

物件關(guān)係映射,是一種技巧,簡(jiǎn)稱(chēng)ORM鳞骤,目的是把程式中複雜的物件窒百,對(duì)應(yīng)到關(guān)聯(lián)式資料庫(kù)的資料表中黍判,取出資料時(shí)不需要用到SQL的語(yǔ)句豫尽,總體上減少了與資料庫(kù)存取的程式碼。

active record作為ORM的框架:當(dāng)中有很多重要功能顷帖,

包括表示model與資料美旧、

表示models之間的關(guān)係、

相關(guān)model的繼承(像是comment 與 article)贬墩、

持久化資料存入資料庫(kù)的驗(yàn)證(像是要一定要填姓名)


二榴嗅、active record慣例勝於設(shè)定

命名慣例:資料表是複數(shù)形;model類(lèi)別是單數(shù)型,第一個(gè)字母大寫(xiě)

資料庫(kù)綱要慣例:外鍵為應(yīng)用資料表加上_id來(lái)命名,比如item_id陶舞,在rails學(xué)習(xí)筆記(5)中嗽测,提到article_id,active record會(huì)在建立關(guān)聯(lián)時(shí)肿孵,找尋這樣的資料欄位唠粥。


三、新增active record models:

新增 Active Record Model 非常簡(jiǎn)單停做。只需要建立一個(gè)ActiveRecord::Base的子類(lèi)別即可

classProduct < ActiveRecord::Base

end

列表綱要的程式碼:

p = Product.new

p.name="Some Book"

puts?p.name?


四晤愧、覆寫(xiě)慣例名稱(chēng)

用ActiveRecord::Base.table_name=方法來(lái)指定對(duì)應(yīng)的資料表名稱(chēng):

classProduct < ActiveRecord::Base

self.table_name ="PRODUCT"

end

甚至也可以修改資料庫(kù)的欄位名稱(chēng):

classProduct < ActiveRecord::Base

self.primary_key ="product_id"

end


五、CRUD讀寫(xiě)資料:

new方法回傳一個(gè)新的物件蛉腌,而create會(huì)會(huì)傳新物件並存入資料庫(kù)官份,前者是創(chuàng)造出來(lái),不會(huì)儲(chǔ)存烙丛,還得加上x(chóng)xx.save才行

new得部分:

user?=?User.new

user.name="David"

user.occupation ="Code Artist"

create得部分:

user = User.create(name:"David", occupation:"Code Artist")


read的部分:

# return the first user named David

david = User.find_by(name:'David')


update得部分:

user = User.find_by(name:'David')

user.update(name:'Dave')

或者是批量修改

User.update_all"max_login_attempts = 3, must_change_password = 'true'"


delete部分:

user = User.find_by(name:'David')

user.destroy


六舅巷、驗(yàn)證資料:

classUser < ActiveRecord::Base

validates:name, presence:true

end


七、資料遷移

要真正的建立一張資料表河咽,需要執(zhí)行:rake db:migrate钠右;要回滾則是執(zhí)行:rake db:rollback。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末库北,一起剝皮案震驚了整個(gè)濱河市爬舰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌寒瓦,老刑警劉巖情屹,帶你破解...
    沈念sama閱讀 212,080評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異杂腰,居然都是意外死亡垃你,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)惜颇,“玉大人皆刺,你說(shuō)我怎么就攤上這事×枭悖” “怎么了羡蛾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,630評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)锨亏。 經(jīng)常有香客問(wèn)我痴怨,道長(zhǎng),這世上最難降的妖魔是什么器予? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,554評(píng)論 1 284
  • 正文 為了忘掉前任浪藻,我火速辦了婚禮,結(jié)果婚禮上乾翔,老公的妹妹穿的比我還像新娘爱葵。我一直安慰自己,他們只是感情好反浓,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,662評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布萌丈。 她就那樣靜靜地躺著,像睡著了一般勾习。 火紅的嫁衣襯著肌膚如雪浓瞪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,856評(píng)論 1 290
  • 那天巧婶,我揣著相機(jī)與錄音乾颁,去河邊找鬼。 笑死艺栈,一個(gè)胖子當(dāng)著我的面吹牛英岭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播湿右,決...
    沈念sama閱讀 39,014評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼诅妹,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了毅人?” 一聲冷哼從身側(cè)響起吭狡,我...
    開(kāi)封第一講書(shū)人閱讀 37,752評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎丈莺,沒(méi)想到半個(gè)月后划煮,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,212評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缔俄,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,541評(píng)論 2 327
  • 正文 我和宋清朗相戀三年弛秋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了器躏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,687評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡蟹略,死狀恐怖登失,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情挖炬,我是刑警寧澤揽浙,帶...
    沈念sama閱讀 34,347評(píng)論 4 331
  • 正文 年R本政府宣布,位于F島的核電站茅茂,受9級(jí)特大地震影響捏萍,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜空闲,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,973評(píng)論 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望走敌。 院中可真熱鬧碴倾,春花似錦、人聲如沸掉丽。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,777評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捶障。三九已至僧须,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間项炼,已是汗流浹背担平。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,006評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锭部,地道東北人暂论。 一個(gè)月前我還...
    沈念sama閱讀 46,406評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像拌禾,于是被迫代替她去往敵國(guó)和親取胎。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,576評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容