亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

ruby on rails中Model的關聯詳解

2019-10-26 19:30:10
字體:
來源:轉載
供稿:網友

前言:
在學習model關聯之前,首先要牢記一下幾點:
1.關聯關系,兩端都要寫好,否則會出現初學者看不懂的錯誤。而且對于理解代碼,非常有好處。
2.model的名字是單數,controller是復數。
3.blong_to后面必須是單數,而且必須是小寫。has_many后面必須是復數。

一:一對多

例如:
王媽媽有兩個孩子,小明和小亮??梢哉f,王媽媽,有多個孩子。也可以說:小明,有一個媽媽;小王,有一個媽媽。我們一般在設計表的時候,是這樣設計的:
mothers表中id和name
sons表中有id和name
為了增加邏輯關系,主外鍵關系,會在多的一方,增加一列,所以sons表中有三列,id和name和mother_id(對應了mothers表的id)
普通SQL:

select test_associate.mothers.name from test_associate.mothers inner join test_associate.sons on sons.mother_id = mothers.id where sons.name = '小李'

ruby代碼:

class Mother  has_many :sons end class Son  belongs_to :mother end

解釋:一個媽媽又多個孩子,一個兒子屬于一個媽媽。
我們在rails console可以測試下:
xiao_wang = Son.first 
mom = xiaowang.mother

這個 .mother 方法就是由 class Son的belongs_to :mother這句話生成的。
也就是相當于轉換成了一下的sql語句:

select * from mothers   join sons   on sons.mother_id = mothers.id   where sons.id = 1

詳細解釋:

A:belongs_to :mother
B:belongs_to :mother, :class => 'Mother', :foreign_key => 'mother_id'
A=B

這個就是Rails最典型的根據慣例來編程,聲明哪個表對應的是哪個class,再在class之間聲明好關聯關系。
1.belongs_to :mother, rails就能判斷出: mothers 表,是一的那一端。 而當前class 是: "class Son", 那么rails 就知道了 兩個表的對應關系。
2.:class => 'Mother', 表示, 一的那一端, 對應的model class是Mother. 根據rails的慣例, Mother model對應的是 數據庫中的 mothers 表。
3.:foreign_key => 'mother_id', rails就知道了, 外鍵是 'mother_id'. 而一對多關系中, 外鍵是保存在 多的那一端(也就是 sons, 所以說,在 sons表中, 必須有一個列, 叫做: mother_id )
所以, 這個復雜的SQL 條件就齊備了, 可以生成了。
上面的ruby代碼,配置好之后, 就可以這樣調用:

son = Son.firstson.mother # .mother方法, 是由 class Son 中的 belongs_to 產生的。mother = Mother.firstmother.sons  # .sons 方法, 是由 class Mother 中的 hash_many 產生的。

二:一對一,比較簡單,也不常用,這里不介紹。(老公和老婆)

三:多對多

例如:
一個學生,有多個老師,(學習了多門課程)

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久精品中文字幕| x99av成人免费| 日韩激情视频在线| 欧美在线视频一二三| xx视频.9999.com| 尤物九九久久国产精品的特点| 亚洲精品国产精品国自产观看浪潮| 日韩欧美在线第一页| 日韩一区二区在线视频| 国产成人精品一区| 亚洲一区免费网站| 最近2019年中文视频免费在线观看| 国产精品免费观看在线| 久久久极品av| 久久久久亚洲精品| 亚洲国产精品999| 国产精品999| 日韩欧美国产黄色| 亚洲视频在线观看网站| 国产91在线播放| 欧美日韩在线另类| 亚洲三级黄色在线观看| 亚洲a∨日韩av高清在线观看| 国产欧美一区二区| 国产精品18久久久久久首页狼| 亚洲成人激情图| 久久国产精品99国产精| 亚洲自拍偷拍第一页| 欧美成人午夜激情视频| 亚洲天堂成人在线| 国产精品久久久久久久电影| 欧美黑人一级爽快片淫片高清| 青青草精品毛片| 中文字幕亚洲精品| 91久久精品国产91性色| 色琪琪综合男人的天堂aⅴ视频| 欧美成人h版在线观看| 亚洲成人久久电影| 中文字幕久热精品在线视频| 66m—66摸成人免费视频| 欧美性高潮床叫视频| 精品成人69xx.xyz| 欧美在线影院在线视频| 91视频九色网站| 欧美成人精品不卡视频在线观看| 欧美一级片在线播放| 中文字幕国内精品| 91在线视频一区| 亚洲男人天堂2019| 精品性高朝久久久久久久| 久久久久久久91| 91香蕉亚洲精品| 色综合久久88色综合天天看泰| 午夜美女久久久久爽久久| 欧美激情在线观看| 欧美日韩福利在线观看| 久久人人爽人人爽人人片亚洲| 国产在线精品成人一区二区三区| 国产欧美精品久久久| 国产美女直播视频一区| 亚洲淫片在线视频| 国产偷亚洲偷欧美偷精品| 日韩av在线网页| 日本一区二区在线免费播放| 欧美黑人性生活视频| 久久国产精品99国产精| 欧美大荫蒂xxx| 欧美整片在线观看| 一区二区三区美女xx视频| 伊人成人开心激情综合网| 欧美电影院免费观看| 欧美视频专区一二在线观看| 成人在线免费观看视视频| 国产免费一区视频观看免费| 亚洲欧美日韩一区二区三区在线| 国产欧美在线观看| 91av在线免费观看| 亚洲天天在线日亚洲洲精| 亚洲一区二区三区777| 亚洲欧美另类在线观看| 日韩在线视频免费观看| 国产日韩专区在线| 91免费在线视频网站| 日韩在线观看免费高清| 亚洲欧美一区二区精品久久久| 欧美电影免费看| 国产mv久久久| 亚洲电影免费观看高清完整版在线| 亚洲自拍在线观看| 欧美乱大交xxxxx| 久久精品国产视频| 69久久夜色精品国产69| 欧美国产亚洲精品久久久8v| 在线电影av不卡网址| 亚洲男人天堂手机在线| 日韩欧美中文第一页| 92版电视剧仙鹤神针在线观看| 久久久久久国产精品三级玉女聊斋| 日韩专区在线观看| 欧美大片免费看| 久久久av网站| 亚洲人成在线观看网站高清| 欧美最猛性xxxxx(亚洲精品)| 国模gogo一区二区大胆私拍| 欧美精品久久久久久久久| 91精品久久久久久久久青青| www国产亚洲精品久久网站| 国产亚洲福利一区| 91在线无精精品一区二区| 亚洲毛片在线观看.| 精品一区二区电影| 成人午夜黄色影院| 亚洲第一视频在线观看| 中文字幕综合一区| 亚洲成人网av| 国产极品精品在线观看| 91精品国产精品| 色系列之999| 毛片精品免费在线观看| 亚洲国产精品成人精品| 国产一区视频在线播放| 日韩中文字幕在线免费观看| 91久久精品国产91久久性色| 97视频在线观看网址| 欧美性生交xxxxxdddd| 欧美激情一二区| 亚洲欧美在线一区| 欧美福利视频在线观看| 狠狠色狠色综合曰曰| 亚洲精品资源在线| 91精品国产91久久久久久不卡| 97色在线视频| 国产精品久久久久久久久| 久久99精品国产99久久6尤物| 欧美老女人www| 欧美精品国产精品日韩精品| 亚洲已满18点击进入在线看片| 日韩中文字幕免费看| 在线观看日韩欧美| 欧美午夜精品久久久久久浪潮| 欧美在线观看www| 欧美日韩成人网| 亚洲最大福利网站| 亚洲色图美腿丝袜| 欧美裸体xxxx极品少妇| 欧美午夜精品久久久久久浪潮| 欧美日韩国产在线| 美日韩精品视频免费看| 成人在线视频网站| 欧美极品少妇xxxxⅹ免费视频| 亚洲欧美在线看| 欧洲永久精品大片ww免费漫画| 亚洲第一精品久久忘忧草社区| 亚洲a级在线观看| 欧美韩日一区二区| 国自产精品手机在线观看视频| 久久久久国产一区二区三区| xvideos国产精品| 精品在线小视频| 91精品视频免费观看| 在线国产精品视频| 亚洲成人精品视频| 在线国产精品播放| 亚洲成成品网站|