2

我正在上一个交互式课程 Rails For Zombies

有一个名为 (Zombie) 的数据库表和以下字段

id  name    graveyard
1   Ash Glen Haven Memorial Cemetary
2   Bob Chapel Hill Cemetary
3   Jim My Fathers Basement
  1. ruby 中的数据库表是否被视为哈希?
  2. 我如何找到 id = 1 的 Zombie 并将其存储在变量中?

我完成了 TryRuby.Org 没有问题。我需要理解这个概念我知道如何毫无问题地使用语言语法只需要理解简单的概念。

非常感谢您的回答。请不要评论,我正在寻求答案。

4

3 回答 3

6

1) 使用 ActiveRecord,您将获得一个 activerecord 对象或一组活动记录对象。然后每个属性都可以作为方法访问:Zombie.find(1).name例如

2)zombie = Zombie.find(1)

我强烈建议您遵循额外的教程并在这里查看:http: //guides.rubyonrails.org/active_record_querying.html

祝你好运!

于 2012-07-31T18:47:01.383 回答
0

这取决于您使用的是哪种数据库。如果您使用的是基于内存的键值存储,那么是的,它的行为类似于哈希。考虑到您有一个“数据库表”,我将假设本教程适用于关系数据库,并且可能是 ActiveRecord。这一段的重点是,有很多不同的数据库表现不同。对你来说,不,表本身不是散列。

但是,它类似于哈希,因为事物以唯一的 ID 存储(通常是从 1 开始并为每条记录向上计数的整数。)

因此,要将僵尸 bob 保存在变量中:

bob = Zombie.find(2)或者你可以做bob = Zombie.find_by_name('Bob')

Find 使用 id 并获取关联的对象,该对象的作用类似于哈希。例如:

bob[:name]将返回"Bob"

我建议您通读文档以完全了解查询数据库的想法:http: //guides.rubyonrails.org/active_record_querying.html

于 2012-07-31T18:50:52.690 回答
0

在 Rails 中,模型映射到表中,如果您使用的是 RDBMS(例如 mysql、postgresql),则这种映射称为对象关系映射;如果您使用的是 mongodb 等无模式 DBMS,则称为对象映射。所以基本上对于你的僵尸(按照惯例是复数)表会有一个名为 Zombie 的模型(按照惯例是单数)。根据映射器,您的表类型会有所不同。无论映射器是什么,特定记录中的任何字段都可以通过在该对象的点 (.) 之后指定字段来访问。

z = Zombie.find(1) 这将找到 id = 1 的行,这将返回一条绝对不是哈希的记录。

您也可以使用 where 来匹配其他一些字段,例如zombie = Zombie.where(:name => 'Ash'),这将返回一组 name = 'Ash' 的记录,这就像一个数组但不完全是一个数组,您可以使用 each 遍历结果并执行收集、映射等数组操作。

于 2012-07-31T19:15:22.040 回答