From a83c0679d7aa1c7a454cf5826c172ae41edb125c Mon Sep 17 00:00:00 2001 From: "Jesse C. Fisher" Date: Sun, 3 May 2015 13:13:36 -0700 Subject: [PATCH] stash play hand logic --- app/controllers/games_controller.rb | 13 ++++++++++++- app/models/game.rb | 1 + app/models/player.rb | 1 + app/models/player_card.rb | 5 +++++ app/views/games/show.html.haml | 5 ++++- db/schema.rb | 13 ++++++++++++- 6 files changed, 35 insertions(+), 3 deletions(-) diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index 312a53c1..427ae162 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -22,7 +22,18 @@ class GamesController < ApplicationController def play_hand # TODO validate player's turn, current_user == @game.current_player.user - @hand = params[:player_card_ids] + @cards_to_play = @game.current_player.player_cards.find(params[:player_card_ids]) + + # Instantiate the play + @play = @game.current_player.plays.new + @play.game_id = @game.id + @play.save + + @cards_to_play.each do |card| + card.play_id = @play.id + card.save + end + # TODO add current_hand logic # @hand > @game.hand_to_beat redirect_to @game diff --git a/app/models/game.rb b/app/models/game.rb index 778f6173..8f5bddc0 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -3,6 +3,7 @@ class Game < ActiveRecord::Base has_many :players, dependent: :destroy has_many :users, through: :players has_many :player_cards, through: :players + has_many :plays, through: :players accepts_nested_attributes_for :players validates :title, presence: true diff --git a/app/models/player.rb b/app/models/player.rb index 41a1f43d..05c41c22 100644 --- a/app/models/player.rb +++ b/app/models/player.rb @@ -4,6 +4,7 @@ class Player < ActiveRecord::Base belongs_to :user has_many :player_cards + has_many :plays validates_presence_of :user_id validates_presence_of :game_id diff --git a/app/models/player_card.rb b/app/models/player_card.rb index 52a3ca93..cd9bc852 100644 --- a/app/models/player_card.rb +++ b/app/models/player_card.rb @@ -1,3 +1,8 @@ class PlayerCard < ActiveRecord::Base belongs_to :player + belongs_to :play + + def to_s + [rank, suit].join ' ' + end end diff --git a/app/views/games/show.html.haml b/app/views/games/show.html.haml index 0501e8f9..10c1870b 100644 --- a/app/views/games/show.html.haml +++ b/app/views/games/show.html.haml @@ -47,7 +47,10 @@ %h1 Hand to beat - else %h1 Open table - %h2= "Played #{@hand}" + %h2 + Played + - @game.plays.last.player_cards.each do |card| + = card.to_s .controls - if @game.control_user == current_user diff --git a/db/schema.rb b/db/schema.rb index 19bdfbd2..0af6ddde 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20150417112103) do +ActiveRecord::Schema.define(version: 20150503133556) do # These are extensions that must be enabled in order to support this database enable_extension "plpgsql" @@ -32,6 +32,7 @@ ActiveRecord::Schema.define(version: 20150417112103) do t.integer "value" t.string "rank" t.string "suit" + t.integer "play_id" end add_index "player_cards", ["card_id"], name: "index_player_cards_on_card_id", using: :btree @@ -47,6 +48,16 @@ ActiveRecord::Schema.define(version: 20150417112103) do add_index "players", ["game_id"], name: "index_players_on_game_id", using: :btree add_index "players", ["user_id"], name: "index_players_on_user_id", using: :btree + create_table "plays", force: true do |t| + t.integer "game_id" + t.integer "player_id" + t.datetime "created_at" + t.datetime "updated_at" + end + + add_index "plays", ["game_id"], name: "index_plays_on_game_id", using: :btree + add_index "plays", ["player_id"], name: "index_plays_on_player_id", using: :btree + create_table "users", force: true do |t| t.string "email", default: "", null: false t.string "encrypted_password", default: ""