Hmmm, now that I think about it. Yes, you are right... On the side. Marnen, would you keep this schema as is, or would you modify it, in any way? Perhaps, as I was suggesting about having the User model as an STI? Or even polymorphic? What are your thoughts?
On Oct 7, 4:33 am, Marnen Laibow-Koser <li...@ruby-forum.com> wrote: > 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-Koserhttp://www.marnen.org > mar...@marnen.org > -- > Posted viahttp://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.