Hi again - another REST question!
I think I’ve got a good grasp on it all now, except for how to
implement HABTM properly. I understand you need turn the join model
into a controller, such as ‘memberships’ below, and then use CRUD on
that to perform joining actions.
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, :through => :memberships
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
What I don’t understand is how that actually works in your code. Let’s
say I’m looking at all of the groups (GET /groups), and want to get
the current user to join one. Presumably, I’d POST to /memberships?
group_id=1&user_id=1.
But how would I handle if that failed, or they didn’t have permission
to do so? And how would I handle the controller returning to the page
it came from? Because I could hit the same action from both sides of
the HABTM relationship. (User joining a group, and group selecting a
user).
Are there any examples of this out there?
Thanks a lot!
Tom