I am working on a little project which essentially allows me as the administrator to upload new products to the app (each product would be a video explaining product) which would have its own specific questionaire (specific to product), and as admin input which users are allowed to see this product and answer the product specific questionaire (send to specific email addresses, each product has different questions and different number of Qs). Users who were selected for a product would receive a link to their email and come to the site and answer the questionaire for the product. Once the user fills out questionaire and submits they will not be able to see the product again.
So I am just thinking about the general design for this app. Keep in mind I do not have a ton of experience so maybe my thinking is not the best. Here is what I had in mind.
Models: Product (description, video (through active storage), completed_users(list of users who have completed and can currently can not see product)),:has Questionaire? :has Users (list of users who still have access to product for review)
Users (demographic info, name, finishedReview(list of products already veiws by user)) :has Product? (the products they still haven't review, which would be deleted after review?)
Questionaire belongs to Product (do I need a questionaire specific model? Or just keep each products questions in an array in Product? (each would be different length))
Also I am trying to think specifically how to implement each product having a different questionnaire with different lengths and questions. I guess I am confused sometimes when to create a model and when to just keep it in one model as an attribute. Is the model made in this situation if it will be used by multiple other models?
Thanks for any help on my thoughts for this, love to hear some feedback!