Christian Fazzini wrote: > Ok, Ive got the following models:User, Artist and Video > > User is 1:1 with Artist (A user can register to be an artist) > Artist is 1:M with Video (An artist can have one or many videos) > > Note that, before any user can register as an artist. He/she must > already have an account with the system. i.e. He must be a registered > user first. Hence the 1:1 relationship with User and Artist. > > Here is the problem, when an artist tries to upload a video: > > def create > @video = Video.new(params[:video]) > @video.artist = current_user.artist > > ------------------------- > > For this particular user: > In the User model, he has id => 29 > In the Artist model, he has id => 1, user_id => 29 (user_id being the > foreign key) > > This means, when the video record is saved to the db. It is saved as: > id => 1, artist_id => 1 (instead of 29), title => 'foobar', etc > > How can such be fixed?
There's nothing to fix. artist_id is giving the ID of the artist record, not the user record. This is exactly what you've asked Rails to do. > Should I remodel my schema? I was thinking of > just having one User model and have this as an STI. Member (Registered > users) and Artist models would inherit from the User model. That might work, or just have a role field in your User model, and only role "artist" can upload videos. Or get rid of the distinction altogether, and do something like class User def artist? self.videos.size > 0 end end > > What is a better approach to fixing this? I don't think it's broken. Best, -- Marnen Laibow-Koser http://www.marnen.org mar...@marnen.org -- Posted via http://www.ruby-forum.com/. -- 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-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.