2012-07-31 80 views
1

我正在一个交互式课程Rails的僵尸查找僵尸其中id = 1,并将其存储在一个变量

有一个叫(僵尸)的数据库表和以下字段

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

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

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

回答

5

1)使用ActiveRecord,您将得到一个activerecord对象或一个活动记录对象数组。每个属性是那么的方法访问:Zombie.find(1).name例如

2)zombie = Zombie.find(1)

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

祝你好运!

+1

伟大的答案和解释,railsforzombies webstie不会告诉你什么活跃的记录是,你的这个指南的链接是如此之大。但我有一个问题,如果我想使用没有导轨的find方法,代码将如何?只是使用红宝石本身?所以我可以看到什么是我需要创建的类是它的表名后跟.find方法?如何检索散列而不是数组?谢谢 – RubyBeginner 2012-07-31 18:53:56

+0

那么你必须使用某种适配器到数据库。对于SQL DB,activerecord是Ruby和Rails中使用的,也许还有其他的,不知道这一点。或者你必须编写自己的适配器,但这需要很长时间。 Ruby本身并不知道如何与数据库交谈。要将其作为散列检索,如果您更喜欢散列风格的语法,您可以随便使用Zombie.find(1)[:name]。 – 2012-07-31 19:00:44

0

这取决于你正在使用什么样的数据库。如果您使用的是基于内存的键值存储,那么是的,它将表现得像散列一样。考虑到你有一个'数据库表',我会假设这个教程是关系数据库,也许是ActiveRecord。这一段的要点是有很多不同的数据库有不同的表现。对于你的,不,表本身不是一个散列。

然而,它类似于在事情散列被存储在与一个唯一的ID

因此,为了节省僵尸鲍勃在一个变量(通常是一个整数从1开始并且对于每个记录计数。):

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

查找使用ID并获得相关的对象,这也像一个哈希值。因此,例如:

bob[:name]将返回"Bob"

我建议你通过文档阅读,充分了解查询数据库的想法:http://guides.rubyonrails.org/active_record_querying.html

0

在Rails模型映射到表这些类的映射如果您正在使用RDBMS(如mysql,postgresql),则称为对象关系映射,如果您使用的是模式较少的DBMS(如mongodb),则称为对象映射。所以基本上对于你的僵尸(按惯例是复数)表格中将会有一个名为Zombie的模型(按惯例单数)。根据映射器的不同,表格类型会有所不同。无论映射器是什么,都可以通过在该对象的点(。)之后指定字段来访问特定记录中的任何字段。 (1)这将找到id = 1的行,这将返回一个绝对不是哈希的记录。

您可以使用其中也匹配其他一些领域这样 僵尸= Zombie.where(:名称=>“灰”),这将返回AA组与记录名称=“灰” 这就好比一个数组,但不完全是一个数组,您可以遍历每个结果并执行像collect,map这样的数组操作。

+0

如何定义一个新模型?如何编写这段代码? z = Zombie.new是否正确定义使用rails和mysql的新模型? – RubyBeginner 2012-07-31 22:33:43

+0

z = Zombie.new基本上创建了一个僵尸类的对象,因此如果数据库中有一个表名为僵尸,那么'z'表示僵尸表中的新记录。所以一旦你保存对象z(z.save),记录将被存储在数据库中。 – Deepak 2012-08-04 11:58:30

相关问题