Ruby on rails開發從頭來(五十六)- ActiveRecord基礎(一對多關聯關係)

來源:互聯網
上載者:User

一對多關聯可以使我們表示一組對象,例如,一個order可以包含有任意多個line item,在資料庫中,所有的line item記錄都通過外部索引鍵關聯到特定的order。

在Active Record中,通過在父物件中的has_many來定義到子物件的關聯,在子物件中使用belongs_to來指定父物件。我們已經在上一篇中瞭解了belongs_to聲明,實際上,在一對多的情況下,和一對一是相同的,所以我們來瞭解has_many聲明。

has_many聲明

has_many聲明了一個屬性,其行為就像一組子物件,可以把它看作數組來訪問,查詢特定的對象,或者添加新對象。例如:

order = Order.newparams[:products_to_buy].each do |prd_id, qty|product = Product.find(prd_id)order.line_items << LineItem.new(:product => product,:quantity => qty)end

追加操作符(>>)所作的不僅僅是向order的line_items列表中追加一個對象,並且和設定了line_item對象外索引值為order對象主索引值,而且在order對象儲存的時候,會同時儲存line_item對象。

我們可以像對數組一樣對has_many關聯進行迴圈:

order = Order.find(123)total = 0.0order.line_items.each do |li|total += li.quantity * li.unit_priceend

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.