Таблица между моделью User
и моделью Period
не существует.У них есть отношения has_many_and_belongs_to.Я все еще изучаю Rails, поэтому, пожалуйста, потерпите меня.
Это содержимое файла модели User.rb
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
has_many :assignments, :order => "end"
has_and_belongs_to_many :periods
end
Это содержимое файла модели Period.rb
class Period < ActiveRecord::Base
has_many :weights
has_many :assignments
has_and_belongs_to_many :users
end
Точное сообщение об ошибке Could not find table 'periods_users'
.Это происходит, когда экземпляр Period или User пытается вызвать пользователей или периоды (например, new_user.periods
или new_period.users
)
Я использую SQLite 3 для базы данных разработки, и SQLite 3 установлен правильно.
Я предполагал, что Rails создаст промежуточные таблицы для отношений habtm.Нужно ли создавать их самому, и если да, то как?
(Обратите внимание, что ассоциации других моделей работают просто отлично)
Если я не предоставляю достаточно информациипожалуйста, дайте мне знать.
edit: после попытки метода B он выдал:
undefined method "klass" for nil:NilClass
Это произошло при попытке управления моделями User
и Period
в rails_admin
Итак, я удалил новую модель и попробовал метод А. Она выкинула
undefined method "period_id" for <ActiveRecord::ConnectionAdapters::SQlite3Adapter:0x3df7760>
при попытке запустить
rake db:migrate
Вот миграция:
class CreateTablePeriodsUsers < ActiveRecord::Migration
def self.up
create_table 'periods_users' do |t|
t.integer period_id
t.integer user_id
end
end
def self.down
drop_table 'periods_users'
end
end
edit # 2
Теперь он имеет "create_has_and_belongs_to_many_reflection: Primary Key is not allowed in a has_and_belongs_to_many join table"
Это произошло после попытки запустить "сервер rails", идо этого я запускал rake db:migrate
успешно
edit # 3:
Я исправил это чуть меньше недели назад, в итоге это стало проблемой со схемой базы данных, поэтому я просто отбросилбазу данных и перенастроили, и она работала нормально.