---
layout: post
title: Same class associations in Rails 3
tags: development
type: post
published: true
---
**[TL;DR]** Even though the selected events conceptually belong to a record,
the latter has the foreign keys to former. So technically, `has_one`
is to be changed to `belongs_to`.
* * *
This is the first time I've ran into something like this and it was interesting
to realize what it actually means when developing a business logic in Rails.
### Context
In this app I'm building, I have Students that have a Record
per year. Each record has several Events. These records also have two
specific events: a test and an audition, registered in the
schema as `id`'s in the record's table.
### So what did technically happen?
I wasn't able to access those specific events through the associations
specified in the model. Given r = Record.first
, when I tried to
access the audition, by using r.test
, Rails would use a SQL query
that would correspond to r.events.first
instead.
After acknowledging that, I turned to @varandas and we both thought it might
be a bug in the Rails framework. Turns out it wasn't; all I had to do was
switch from has\_one
to belongs\_to
(thanks @drogus!). The reason for that is the
foreign key is on the records
table. From the framework's
perspective, it looks like the record actually belongs to the event,
when in practice it's not.
### Code sample