I have a model Car
which have a has_one
relation with another model Owner
. I am writing a method to validate that a Car
has only one Owner
but the count
method is not working.
I was trying something like
if car.owner.present? && car.owner.count > 1
errors << A car can only have one owner
end
But I am getting the below error
NoMethodError Exception: undefined method 'count'
I figured that the count
method doesn't work in a has_one
relationship but is there any other way to count or validate that it has only one record ? or is there any better way to write the test unit that I am trying to ?
CodePudding user response:
car.owner
, as defined by has_one
, returns either an instance of User or nil - but, not the relationship. The assumption is that there always should be just one record, however it is not enforced.
If you really want to enforce this, you should create a unique index on owner_id
column - validations tend to having some racing conditions...