I have a model:
class Group < ActiveRecord::Base
has_many :progressions
has_one :active_progression, class_name: "Progression"
end
And the child:
class Progression < ActiveRecord::Base
belongs_to :group
end
I know that convention says I should create a separate foreign key inside Progression to associate the active progression with the Group's id (as that is how has_one works).
However, IMHO, it makes more logical sense to store the 'active' child's id in the Group model. Edit: The reasoning is that storing the Group id in the Progression model as active_group_id or something similar is semantically confusing and opens the possibility of having multiple active progressions associated with a Group, which is obviously incorrect.
I have read several posts where people confuse the underlying has_one meaning, assuming it does the same thing as belongs_to but for the parent. I know this is not the case. has_one does the opposite of belongs_to, i.e. looking for the key in the counterpart instead of the calling model.
If Rails does not provide a method for creating an association of this nature, what is the most Railsy solution?
Aucun commentaire:
Enregistrer un commentaire