Я следующие Миграции и модели:Rails - has_many отношение вызывает NoMethodError
class CreatePlatforms < ActiveRecord::Migration
def change
create_table :platforms do |t|
t.integer :user_id
t.string :name
t.string :platform_id
t.timestamps
end
end
end
class CreateUsers < ActiveRecord::Migration
def change
create_table :users do |t|
t.string :email
t.string :first_name
t.string :last_name
t.string :gender
t.date :birthday
t.timestamps
end
end
end
class Platform < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
attr_accessible :email, :first_name, :last_name, :gender, :birthday
has_many :platforms
end
С этим определением я могу создавать пользователей и платформы:
user = User.new
platform1 = Platform.new
platform2 = Platform.new
И даже я могу связать пользователей платформы :
platform1.user = user
Но когда я пытаюсь связать платформы с пользователями или получать платформы от пользователей он выходит из строя:
user.platforms << user or user.platforms
NoMethodError: undefined method `platforms' for #<User:0x007f8cfd47a770>
Вы уверены, что вы перезагрузили среду и пользовательскую переменную? Например, если у вас есть экземпляр пользователя в консоли Rails, выполните миграцию, обновите модель пользователя и затем перезагрузите консоль, она все равно не будет работать, потому что экземпляр пользователя был сделан из более старой версии класса, и вам нужно создать новую (снова выберите его из БД). Если это происходит в вашей серверной среде Dev, поставьте больше контекста/подробностей, пожалуйста. –
Перезагрузка консоли также является очень возможным решением! –
Я сделал это после перенастройки базы данных в первый раз. Но на всякий случай я перезагрузил консоль, и проблема не устранена. Существует не так много контекста, это пустой проект rails (rails 4.0.0 ruby 2.0.0) – user1573607