我想通過這樣的關係做出的has_many添加的has_many:掙扎通過關係
#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
#availability.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
我創建的兩個模型和比沒有在模型中添加代碼跑rake db:migrate
(創建表) 。 我做了一個遷移文件:
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
跑rake db:migrate
比我上面添加的所有文件的代碼。 然後,如果我嘗試生成任何東西,它會給我NameError: undefined local variable or method availabilities for User (call 'User.connection' to establish a connection):Class
我是Ruby on Rails的新手。
不存在可用性的複數。 – DrevanTonder
嘗試這是在'用戶。rb',你會明白我的意思:'has_many:timeslots,:through =>:availabilities' –
對不起,我以爲你的意思是可用性的複數是availabiltty。我明白你的意思了。 – DrevanTonder