mercredi 1 mars 2017

Struggling to add has_many through relationship

I am trying to make a has_many through relationship like this:

#user.rb
class User < ApplicationRecord
  # Include default devise modules. Others available are:
  # :confirmable, :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  has_many :availabilities
  has_many :timeslots, :through => availabilities
end

#availabilty.rb
class Availability < ApplicationRecord
    belongs_to :timeslot
    belongs_to :user
end

#timeslot.rb
class Timeslot < ApplicationRecord
    has_many :availabilities
    has_many :timeslots, :through => availabilities
end

I created the two models and than ran rake db:migrate without adding the code in the models (to create the tables). I made a migration file:

class AddFieldsToTables < ActiveRecord::Migration[5.0]
  def change
    add_column :users, :availability_id, :integer
    add_column :timeslots, :availability_id, :integer
    add_column :availabilities, :user_id, :integer
    add_column :availabilities, :timeslot_id, :integer
  end
end

and ran rake db:migrate Than I added the code above to all the files. And then if I try to generate anything it gives me NameError: undefined local variable or methodavailabilities' for User (call 'User.connection' to establish a connection):Class`

I am new to Ruby on Rails.

Aucun commentaire:

Enregistrer un commentaire