簡體   English   中英

Rails ActiveRecord-僅加載某些相關記錄

[英]Rails ActiveRecord - Only load certain associated records

我有兩個類AddressReview 評論有一個地址,一個地址可以有很多評論。 我通過說“ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM