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.

Reply via email to