Tom Snow
Tom Snow

Reputation: 35

How to use foreign keys in Ruby on the Rails query?

I have three models; events, users and entries. I would like on my users page for to be able to retrieve information relating to the events associated with the event associated with the user.

def show
    @user = User.find(params[:id])
    @entry = @user.entries.paginate(page: params[:page])
  end

It is more than happy with @user.entries.count but I would like to link up in a table something like this:

Event Name - Event Location - Course

My models are bellow:

class Event < ApplicationRecord
    has_many :entries, dependent: :destroy

class User < ApplicationRecord
    has_many :entries, dependent: :destroy

class Entry < ApplicationRecord
    belongs_to :user
    belongs_to :event

Upvotes: 1

Views: 77

Answers (1)

Sebasti&#225;n Palma
Sebasti&#225;n Palma

Reputation: 33420

If they're related as:

class User < ApplicationRecord
  has_many :events
end

class Event < ApplicationRecord
  has_many :entries
  belongs_to :user
end

class Entry < ApplicationRecord
  belongs_to :event
end

Then you can use joins starting from Entry, up to User and check events where the user id is the one what you need:

Entry.joins(event: :user).where(users: { id: user_id })

Upvotes: 1

Related Questions