I'm writing a wiki-based website from scratch and would like some suggestions on the best way to deal with this common situation. A page can be edited by a logged-in and registered user or by an anonymous visitor. If a user edits the page, the model object representing the edit is associated with a user via a user_id foreign key. But if an anonymous visitor can edit the page too, what's the best way to model this? One idea I'm entertaining is to make a polymorphic relationship between the edit or page version and two different classes: a User class and an AnonymousVisitor class. But I'm not sure. Thanks in advance for your tips and suggestions.
on 2009-02-23 17:59
on 2009-02-23 18:00
I forgot to mention the requirement that if an anonymous visitor edits a page, their IP address is recorded.
on 2009-02-23 19:37
Create a single row in the user table to represent the anonymous user, and associate the IP address with the edit instead of with the user. That way you don't clutter your database with anonymous users but you still retain the IP for each edit.
on 2009-02-24 00:18