2013-04-29 140 views
0

所以我有以下字段项目的典范:生成模型Ruby on Rails的

  • 名称(字符串)
  • 说明(文本)
  • 藏起来(串)
  • 导引头(串)
  • 龙(浮动)
  • 纬度(浮动)
  • 关键字(字符串)
  • 找到(布尔)

排行榜应具有以下字段:

-Username(名称) -Points(INT)

我想创造高分,将迭代模型Item模型并查找布尔值为true的entiers。然后用一个点将搜索者添加到高分表。如果用户已经存在,那么只需在他的条目中添加一个额外的点。

我怎么会去设计这种类型的数据库...

+0

你是什么意思?“如果用户已经存在,那么只需在他的条目中添加一个额外的点。”当它决定再次迭代?他的作品有什么意义? – kiddorails 2013-04-29 11:39:27

+0

如果用户已被添加到高分表。每次找到的选项从false更改为true时,它应该迭代。 (因为创建新条目时它总是错误的)一个点意味着一个分数。我将编辑帖子。 – 2013-04-29 11:42:22

回答

2

我永远不会建议迭代方法在这里。这是我们正在讨论的数据库,对数据进行线性迭代是不现实的。

你可以做的是使用Observer。阅读有关他们在这里 - http://api.rubyonrails.org/classes/ActiveRecord/Observer.html

有了这个,你可以检查在saveupdate回调并根据您的布尔值,你可以创建/更新的高分纪录。

+0

哦,这很酷! 让我只写逻辑。 您可以创建一个观察项目模型的Obeserver。 当模型 中的内容更新时,您可以检查找到的选项是否为真 如果为true在高分模型中创建新条目 – 2013-04-29 12:07:42

+0

准确无误。做这份工作真是太棒了。 – kiddorails 2013-04-29 17:31:05