(я прошу прощения за то, что я здесь полностью неграмотен, надеюсь, я дал достаточно информации)
Я строю players
, которые связаны с games
, и мне интересно, как мне получить валидацию для игры, когда я собираю игрока. Итак, у меня есть:
class Game < ActiveRecord::Base
has_many :players, :dependent => :destroy
#does not work or is ineffective due to how I made my player's create in the controller
validates :players, :length => { :maximum => 6 }
end
class Player < ActiveRecord::Base
belongs_to :game
end
Существует также связь с пользователем (игрок принадлежит как к игре, так и к пользователю), но это пока не имеет значения.
В контроллере игроков у меня есть:
def create
@game = Game.find(params[:game_id])
@players_in_game = Array.new
@game.terra_players.each do |i|
@players_in_game.push(i.user_id)
end
@player = current_user.terra_players.build(:terra_game => @terra_game)
if @player.save
redirect_to @game
else
render 'new'
end
end
Который успешно делает нового игрока и добавляет его в игру.
Но проверка в class Game
не работает, возможно потому, что я не вызываю create / update / update_attributes для моей Game
модели.
Как мне запустить проверку? Должен ли я переделывать def create
, чтобы использовать @ game.create / update / update_attribute? Если да, то как?
Спасибо за вашу помощь.