赫謙小便籤

Rails的關連小筆記

今天在rails best practices中看到一則ActiveRecord Query Interface Optimization,裡面提到在has_manybelongs_to的時候可以自訂:select來指定要撈出的欄位 … 所以請繼續閱讀

後來我發現這個方式很適合用在類似需要Record.includes(:user)的時候,因為User的欄位可能過多且資料量太大導致就算打了index也跑不快,所以用這種方式來撈可以加速 … 因此我便寫了

record.rb
1
belongs_to :user, select: :id

可是後來發現這樣會沒辦法在事後加上欄位,所以在需要特定欄位的時候必須另外寫一個自訂的關連

record.rb
1
belongs_to :user_with_udid, {select: [:id, :udid], class_name: "User", foreign_key: :user_id}

這樣子一來,就能夠用以下方式取得UDID了 Record.includes(:user_with_udid).last.udid

Comments