[英]Rails ActiveRecord - Only load certain associated records
我有兩個類Address
和Review
。 評論有一個地址,一個地址可以有很多評論。 我通過說“ Review belongs_to Address
和“ Address has_many Reviews
來對此建模。
在應用程序中,主要用例是創建一個新的審閱。 作為創建評論的一部分,用戶將輸入一個地址,我們將在幕后將其與現有記錄進行匹配,或者在必要時創建一個新記錄。
我設置了這樣的路由: resources :addresses, only: [:new, :create, :show, :update], :as => :reviews, :path => :reviews, :controller => :reviews
。 這使我可以使用/reviews/[:id]
類的URL。
加載地址和ID = [:id]的單個關聯評論的最佳方法是什么。
到目前為止,我有
@review = Review.find(params[:id])
@address = @review.address
但是如果我再做類似的事情
@address.reviews
我認為ActiveRecord將加載所有相關的評論,這不是我想要的,因為我認為評論是主要實體,該實體具有地址。
我弄糊塗了我的設計嗎? 從概念上講an address is part of a review
但我看不到任何對此建模的方法,以使address can still have many review
'
編輯:我認為我的一些困惑來自這樣一個事實,即我的視圖的表單需要使用一個地址,因為地址具有accepts_nested_attributes_for :reviews
,這使得所有驗證和表單構建都更加容易。
提前謝謝了!
您已經正確建模了恕我直言。
對於您的表單,您很可能需要以下內容:
= form_for @review do |f|
= f.body
= f.fields_for :address do |af|
= af.street
= af.city
然后在您的評論模型中,您需要:accepts_nested_attributes_for:address
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.