You might want to take a look at an optimistic blocking strategy, so let as many users as possible edit the page. But when the user tries to save the data, check if the token has changed and rejected the change. For instance:
- User A starts editing the item and holds the last modified timestamp as a token
- User B started editing the item and also saved the last modified timestamp as a token
- User B saves his changes. The last timestamp changed has not changed, so the save was successful.
- User A saves his changes. The last timestamp changed has changed, so their storage is rejected. The user may be given the opportunity to resolve the conflict (if any).
It looks like Rails is already like @Andy Waite (+1).
source share