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?


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.