ruby - Rails Data Modelling: How can I model a has_many relationship that's actually a collection of another model? -


to more specific, have user model has_one profile, i'm in need add has_many relationship user new model contact, contact collection of profiles ("user has_many profiles" behind scenes).

basic diagram

how correctly model this? there way avoid creating new model contact altogether?

my concern, , reason ask question having perform inefficient query retrieve user contacts collection: user.contacts , each contact i'd have create query retrieve each profile, right?

how can make when do: user.contacts retrieves collection of profiles doesn't interfere/is independent of user.profile relationship?

thanks in advance!

you wouldn't need new model, it's easiest (at least, in opinion) have one, not in way presented above.

rails aside, need join table, user_profiles, contains foreign keys user_id , profile_id. now, how make work you.

your contact model here actually, in more rails-y way, userprofile model. user like:

class user   has_many :user_profiles # join table   has_many :contacts, through: :user_profiles    has_one: profile end 

here, user.contacts profiles. still have model, userprofile, don't use in practice:

class userprofile   belongs_to :user   belongs_to :profile end 

which can build via:

rails g model userprofile user:references profile:references

hope helps!


Comments

Popular posts from this blog

php - Vagrant up error - Uncaught Reflection Exception: Class DOMDocument does not exist -

vue.js - Create hooks for automated testing -

Add new key value to json node in java -