My model data is the following:
Instead of having a Checkin that belongs to both User and Place, I chose to add another model, Program, that allows to list all the places a user can checkin into, and also hide the checkins he’s no longer involved in (= the user sign out of a specific program).
That give me crazy relationships:
Program has_many Checkin (and a double belongs_to Place and User)
Checkin belongs_to Program
User has_many Program
Place has_many Program
Place has_many Checkin through Program
In order to access a place or a user from a checkin, I do a has_one through (program): Checkin has_one User through Program. It allows me to have clean ActiveRecord relationships.
But I don’t know if it is the most suitable, and if has_one is made for this (apparently not really).