Ruby on rails 在用户数据库中包含帐户信息

Ruby on rails 在用户数据库中包含帐户信息,ruby-on-rails,database,security,user-accounts,Ruby On Rails,Database,Security,User Accounts,我正在构建我的第一个Rail应用程序,并开始设置我的数据库。我有一个simpel Users表,包含名称、电子邮件(登录)、密码等 该网站允许用户相互下注(使用垄断资金),因此我需要向数据库中添加有关用户当前赢款和其他微妙事项的信息 问题:我应该将这些信息放在Users表中,还是创建Account表并在其中插入信息。我不知道在Users表中插入信息是否会引起任何安全问题 问候 肯尼斯 丹麦他们的行为与实际用户本身是不同的实体。将用户信息(如配置文件信息)保存在一个表中。所有其他实体应分开。因此,

我正在构建我的第一个Rail应用程序,并开始设置我的数据库。我有一个simpel Users表,包含名称、电子邮件(登录)、密码等

该网站允许用户相互下注(使用垄断资金),因此我需要向数据库中添加有关用户当前赢款和其他微妙事项的信息

问题:我应该将这些信息放在Users表中,还是创建Account表并在其中插入信息。我不知道在Users表中插入信息是否会引起任何安全问题

问候

肯尼斯

丹麦

他们的行为与实际用户本身是不同的实体。将用户信息(如配置文件信息)保存在一个表中。所有其他实体应分开。因此,您希望将其分离到另一个表中,并创建一个外键返回到users表,以确定此accounts表中的哪一行属于该用户。

从事务的角度来看,拥有跟踪操作的辅助记录要比就地修改单个记录好得多

例如,如果您有一个用户可以下注的系统,那么很自然会有一个Bet类定义两个人之间的下注。随着用户创建赌注,关联列表将增加。用Rails的说法,它看起来是这样的:

class User < ActiveRecord::Base
  has_many :bets
  has_many :bet_pools,
    :through => :bets
end

class Bet < ActiveRecord::Base
  belongs_to :user
  belongs_to :bet_pool
end

class BetPool < ActiveRecord::Base
  has_many :bets
  belongs_to :winning_bet
  belongs_to :winning_user,
    :class_name => 'User',
    :through :winning_bet,
    :source => :user
end
按顺序完成您希望余额从1000到1500,然后下降到1400,但是第二个过程在加载时以原始值1000开始,然后调整到900并保存,超过第一个过程的结果


有一些方法,如ActiveRecord的和减量,可以帮助完成这类工作,但最好的结果是根据需要简单地制表。

我希望您没有使用自己的安全系统。如果你这么做了,你应该考虑用类似这样的东西来代替它。。谢谢使用Authlogic:)嗨,谢谢。这正是我想要的。很高兴我问:)嗨,伙计,非常感谢你详细的回答-你肯定明白了一点,那就是不要不断调整用户或帐户记录中的属性。我只是觉得循环所有的赌注来总结用户的赢款会慢一些:)但是再次感谢你。你的答案肯定会被使用。事实上,有了适当的索引,你会惊讶于一个数据库能如此快速地将这样的事情制成表格。将几千条条目相加几乎是瞬时的,只有当您同时向大量用户显示结果时才会减慢速度。如果您需要扩展它,您可以创建一个包含帐户余额的中间汇总表,该表会偶尔更新一次,如果需要,可以从头开始重新计算。
# Process A intending to add $500
user.balance = user.balance + 500
user.save

# Process B intending to deduct $100
user.balance = user.balance - 100
user.save