I have a little issue about how to structure a database for a Rails app that includes sharing. The application is for song writers and musicians and helps then collaborate on musical pieces. Essentially there are a couple of parts There are ''owners'' who create ''songbooks'' and ''songs''. Each ''songbook'' can contains many ''songs'' and ''songs'' must belong to one ''songbook'', although they can be copied as new versions to other ''songbooks'' Both ''songsbooks'' and ''songs'' can be shared with other ''owners'' to various degrees. I can elect to make a ''songbook'' or ''song'' shared with other users in the following ways (I''d need to know their email address or username): read-only (can only read, can''t contribute) read-write (can read and edit existing songs but can''t add new ones) read-write-add (can read, edit and contribute new songs to the songbook - this doesn''t apply to a single shared song, just songbooks) I can also make ''songs'' and ''songbooks'' public: public-read (anyone, even users who aren''t subscribed to the service or aren''t logged in can read) public-full (anyone, even users who aren''t subscribed to the service or aren''t logged in can read and edit songs - although they can''t add songs) Now, I''m a little new to Rails and I know how I''d go about this in C# (i.e. by writing lots and lots of code) but Rails has so many mechanisms that I am unaware of I was wondering if there was already some way or doing this, or if not all of it then maybe 90% Problem is I''m not sure if I need to structure my tables a certain way, or if there are fields I need to include, or what. I''m not even sure where to start. I''ve searched this forum and Google and whole bunch of places but I now have more questions than answers. I guess the way I''d do it is something like: Tables (roughly): owners id - integer email - varchar(255) username - varchar(20) password.... songbooks id - integer name - varchar(50) owner_id - integer songs id - integer name - varchar(50) songbook_id - integer songbook_shares owner_id - integer songbook_id - integer type - integer song_shares owner_id - integer song_id - integer type - integer Models: class Owner < ActiveRecord::Base has_many :songbooks has_many :songbook_shares has_many :song_shares etc... end class Songbook < ActiveRecord::Base belongs_to :owner etc... end class Song < ActiveRecord::Base belongs_to :songbook etc... end But this is where I get stuck. I suspect my original table ideas are wrong, but I''m just not sure how to proceed in the Rails way. If anyone has tackled something like this before and could point me in the right direction I''d really appreciate it. Dale --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---