Ruby on rails開發從頭來(五十四)- ActiveRecord基礎(指定關聯關係)

來源:互聯網
上載者:User

Rails支援三種表間關聯關係,一對一,一對多,多對多,你需要在Model中加入聲明來標識這些關聯:has_one,has_many,belongs_to,has_and_belongs_to_many。

一對一關聯關係可能存在於象訂單和發票這樣的關係,一個訂單只能有一個發票,在Rails中,我們這樣指明:

class Order < ActiveRecord::Basehas_one :invoice. . .class Invoice < ActiveRecord::Basebelongs_to :order. . .

訂單和條目之間的關係為一對多,我們這樣聲明:

class Order < ActiveRecord::Basehas_many :line_items. . .class LineItem < ActiveRecord::Basebelongs_to :order. . .

我們也許會對商品進行分類,一種商品可能會歸入幾個商品類別下,而一個商品類別下有可能會有多種商品,商品和分類的關係就為多對多,Rails中我們這樣聲明:

class Product < ActiveRecord::Basehas_and_belongs_to_many :categories. . .class Category < ActiveRecord::Basehas_and_belongs_to_many :products. . .

上面的這些標識關聯關係的定義都會添加一些方法給Model,用來在關聯的對象中進行導航,後面我們會分別對上面的三種關聯關係展開討論。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.