Rails - Beginner wants feedback on how they've modeled their app and how to do it better.
- by adam
I think the way I've modelled my app is a bit fishy and i need to rejig things, im just not sure how. I've already re-jigged and refactored before. It took a long time ( I'm a beginner ) and I'm hesitant to it again in case i head off in the wrong direction again.
Basic Idea, user can submit an answer, another user can mark it correct or incorrect. If incorrect they have to write the correct answer. Users can view their and everybody else's correct and incorrect answers.
So I did it this way
class Answer
has_one: correction
end
class Correction
belongs_to :answer
end
when a user marks an answer as correct, I set checked_at:DateTime and checked_by_id:integer on the Answer object to keep track of who checked the answer and when.
For incorrect answers I create a correction object which holds the correct answer and again checked_by and checked_at details.
I don't like this because I have checked_by and checked_at in both models. It just doesn't sit right.
Possible solutions are:
Create a third model such as VerifiedAnswer and move the checked_by/at attributes to that. It will handle the situtation where an answer is marked correct.
Or are these models thin enough (they dont have any other attributes) that I can just have one model ( Answer ) that has all the attributes to store all this information?