anonymous user modeling


I'm working on my first simple Rails app in which users submit sport "tweets" (e.g. "tennis, squash") and the server matches them up with partners. The server will return you a list of SportMatches based on similar tweets and you have different options (e.g. email, SMS) to reply back to someone's tweet and accept him/her as partner. Initially, the modeling was straight forward since: User has_many SportTweets and SportTweet belongs to User. Notifications were simply part of the User, or they could have been modeled as a 1-to-1 relationship to User.

My business requirements changed a little, as now I have anonymous users who can also post SportTweets. Because they don't have an account/profile, they must also submit notifications (e.g. email, SMS) with the tweet. I don't know how to model this the Rails way. SportTweets are now either anonymous, or authenticated-user-posted (AUP). So, now, my SportTweets table will have the following columns: - type: either "anonymous" or "AUP" - user_id: only for AUP - notifications_id: only for anonymous - sports: for all - post_date: for all - post_location: for all - etc.

There would be a Notifications table. A notification record would belong either to a User, or to a SportsTweet. I guess I would model this with polymorphic associations.

That just doesn't look like the Rails way. Did anyone come across a similar problem? How did you solve it?

Thanks, T

Is there a particular reason for storing notifications separately? By that I mean that it seems likely that authenticated users will *also* have SMS / email / etc. I'd typically just borrow the existing User machinery but add in a flag ("anonymous", for instance) that skips the registration parts.

--Matt Jones

Hey Matt,

Thanks for the suggestion. I found it in "The Rails 3 Way" - chapter 9: STI tables.

Regards, T