Skip to content

Instantly share code, notes, and snippets.

@bensheldon
Created March 26, 2025 16:31
Show Gist options
  • Save bensheldon/2075bf807277697681c69f382fc96e9c to your computer and use it in GitHub Desktop.
Save bensheldon/2075bf807277697681c69f382fc96e9c to your computer and use it in GitHub Desktop.
class Household < ApplicationRecord
has_many :members
has_many :expenses
end
class Member < ApplicationRecord
belongs_to :household
end
class Expense < ApplicationController
belongs_to :household
belongs_to :member
# Better way to do this?
def member
if member_id && household.members.loaded?
household.members.find { |m| m.id == member_id } || super
else
super
end
end
end
# Avoid double loading member records
Household.all.includes(:members, expenses: :member)
# Prefer:
Household.all.includes(:members, :expenses)
@bensheldon
Copy link
Author

if member_id && !association(:member).loaded? && association(:household).loaded? && household.association(:members).loaded?

And with Preloaders

https://gist.github.com/p8/f6ae70e1ec7d33703e3e61ac0b79a843

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment