Best way to model user or IP


#1

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.


#2

I forgot to mention the requirement that if an anonymous visitor edits
a page, their IP address is recorded.


#3

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.


#4

Thanks Sarah.