Я застрял в этом вопросе какое-то время.Рельсы: от многих до многих Модель, NoMethodError: неопределенный метод
Это мое отношение .
class Game < ActiveRecord::Base
has_many :participates , :dependent => :destroy
has_many :players, through: :participates, :dependent => :destroy
end
class Player < ActiveRecord::Base
has_many :participates , :dependent => :destroy
has_many :games, through: :participates, :dependent => :destroy
end
class Participate < ActiveRecord::Base
belongs_to :player
belongs_to :game
end
И я поставил это в seed.rb
Player.destroy_all
Game.destroy_all
g1 = Game.create(game_name: "LOL")
g2 = Game.create(game_name: "DOTA")
p1 = Player.create(player_name: "Coda", games: [g1,g2]);
p2 = Player.create(player_name: "Nance", games: [g2]);
Когда я использовал rails console
, модель Participate
работает отлично. Он может найти game
и player
относительно, но следующие команды забросили ошибку.
[53] pry(main)> Game.first.players
Game Load (0.4ms) SELECT `games`.* FROM `games` ORDER BY `games`.`id` ASC LIMIT 1
NoMethodError: undefined method `players' for #<Game:0x007fd0ff0ab7c0>
from /Users/Coda/.rvm/gems/[email protected]/gems/activemodel-4.2.3/lib/active_model/attribute_methods.rb:433:in `method_missing'
[56] pry(main)> Player.first.games
Player Load (0.4ms) SELECT `players`.* FROM `players` ORDER BY `players`.`id` ASC LIMIT 1
NoMethodError: undefined method `games' for #<Player:0x007fd0fd8a7cf0>
from /Users/Coda/.rvm/gems/[email protected]/gems/activemodel-4.2.3/lib/active_model/attribute_methods.rb:433:in `method_missing'
перезапустить консоль, и заполнить Участвовать напрямую, и он работает. Думаю, я что-то пропустил или неправильно набрал какого-то персонажа. Спасибо, я проверю его еще раз. –