IM-utväxling i dag mellan Fleecelabs kontor i Washington och Stockholm.
Peter: Såg till slut David Heinemeier Hanssons RailsConf-keynote idag. Tankestimulerande. Har du sett?
Svante: nä, gillar du?
Peter: Executive brief: Controllers blir mer CRUD. En controller mappar mot en modell och sköter create, show, update och delete (eller om det kallas destroy).
Och i routes säger du typ bara map.resources :person eller nåt sånt, och då mappas mot people_controller och alla CRUD-actions mappas upp som standar.d
Svante: spännande, är detta om den nya versionen av rails?
Peter: Ja, men han går även in på ActiveResource som är ett eget lib.
Ok. Det jag tyckte var tankestimulerande var det han sa att man för att få fina URLer (eller typ ett snyggt API utåt), ska ha modeller som inte är things utan även relationships, events och states.
Så att i stället för /groups/add_user?user_id=4 så skulle det finnas en explicit modell Membership, med egen controller då, med URL:en /memberships/create?user_id=4&group_id=10
Och, nu kommer det tänkvärda, ... hans tes är att man ska modellera utifrån att man har modeller med CRUD-operationer som bas.
Svante: intressant!
Peter: Ja. Fast tanken gnager lite. Kan det funka i alla lägen?
Upplägget stödjer ju även custom-operationer. Han har exemplet med cases, där operationen close finns (även om man kan ha modellen Closure). Där skulle custom-operationen vara close då, i stället för CRUD.
Svante: Men det måste inte finnas en modell bakom controllern, va? Även om du har en controller som heter membership, så kan väl create göra det du skrev först?
Eller menar han att det skall finnas en modell i databasen?
Peter: Ja, du har modellobjekt för det.
Sedan är det här med responds_to do |wants| med också.
Jag tycker att REST verkar rätt sunt. En intressant aspekt är just det att det begränsar designen om man i stort sett bara har resurser som man manipulerar med ett fåtal generella operationer (t.ex. CRUD). En bra artikel som handlar om en migrering till REST och hur det förenklade designen är Scott Raymonds Refactoring to REST.
(Tyvärr verkar hans sida ligga nere just nu men man kan läsa den här om man skrollar ner lite)
/Jonas
Posted by: Jonas Bengtsson | 2007.05.07 at 11:13
Tack för tipset Jonas!
Posted by: Peter | 2007.05.07 at 11:13