追踪胜利&使用PSQL / DataMapper丢失

时间:2017-05-31 01:06:18

标签: ruby oop sinatra datamapper

我有一个User类,允许人们注册和玩游戏;我还有一个Game类,其中包含所述游戏(RPS)的逻辑。

当人们注册时,他们的信息保存在psql数据库中。使用参数获得信息。它看起来像这样:

Class User

  attr_reader :weapon

  include DataMapper::Resource

  property :id,      Serial
  property :name,    String, required: true
  property :email,   String, required: true, unique: true
  property :password_digest, Text
  attr_reader :password
  attr_accessor :password_confirmation

  validates_confirmation_of :password
  validates_format_of :email, as: :email_address

  has n, :games

相应的Game类,包含此DB逻辑:

class Game

  include DataMapper::Resource

  property :id,     Serial
  property :win,    ?
  property :lose,   ?

  belongs_to :user

我的问题是我真的不知道如何记录用户赢了/输了多少游戏。我是否需要(或者我应该为胜负而分开?我应该使用什么样的关键类型(serial / int)?我想要的只是'赢'或'输'每次增加一个玩家...好吧,赢或输。

非常感谢所有分享的帮助/知识。

感谢。

1 个答案:

答案 0 :(得分:0)

一种方法可以是添加两个整数columsn" wins"和"损失"到用户,并使辅助方法增加:

property :wins, Integer, default: 0
property :losses, Integer, default: 0

# usage: user.increment(:wins) or user.increment(:losses)
def increment(type)
  update({ type => (send(:type) + 1) })
end
相关问题