I have 3 models: User, Order(user_id), Membership(order_id).
I'd like to know if a given user has a valid membership, i.e: the
order.status == 'paid' and membership.expires_at > Time.now
I could use a User has_many memberships :through => :order, and put a
condition but that adds membership and order logic to the User model
which I don't want.
So my idea is to add a redundant user_id to membership, and to set an
expires_at for a membership only when the order gets paid. This way I
can't easily query and it keeps the encapsulation of each model where it
What do you think?