2012-01-10 50 views
0

我想从记录中获得一个id。Rails找到方法

当我写这篇文章:

@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}) 

我想它返回的记录量。

请帮助我。

UPD: 我有一个输出:

=> [#<Table id: 6, train: 1, time: "12-00", datestart: "2012-01-10", created_at: 
"2012-01-10 01:59:29", updated_at: "2012-01-10 01:59:29">] 

表ID为6,我需要得到它。

+0

你必须包括(1)你得到的输出和(2)你期望的输出。你不包括任何输出 - 我们怎么知道发生了什么问题?对于这个特定的问题,我们还需要查看“Table”类的模型定义。 – jefflunt 2012-01-10 02:27:05

回答

2

id只是该物体的一个属性。只需拨打:

> @ticket.table.id 
=> 6 

假设Table类是一个子类的ActiveRecord::Base,这种类型的所有对象都应该有一个id属性,你可以只是.id

您遇到的问题参考上面是你正在使用.find(:all, ...)这将总是返回一个对象的集合,即使只有一个记录被发现,这是什么导致你得到一个只有一个元素的数组。

因此,无论是使用.find(:first, ...)或​​,返回只有一行,或简单地通过下列方法中的一个引用的第一个元素阵列中:

> @ticket.table.first.id 
=> 6 

> @ticket.table[0].id 
=> 6 
+0

感谢您的回答。但它表示这个数组中没有方法ID(!!!)。我已经尝试过这种方法。 – evilgeniuz 2012-01-10 02:43:40

+0

哦!我错过了第一次读它时这是一个数组。我已经更新了我的答案。 – jefflunt 2012-01-10 02:47:49

+0

谢谢!你已经保存了一个命运。 – evilgeniuz 2012-01-10 02:54:02

2
@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}).map(&:id) 

将为您提供所有令人满意的条件的ID数组。如果您只想使用一个ID,请使用下面的代码。

@ticket.table = Table.find(:all, :conditions => {:train => @ticket.train, :datestart => @ticket.selldate}).map(&:id).first 

希望这会有所帮助。

+0

这对我更好。非常感谢! – evilgeniuz 2012-01-10 03:13:14

+0

而不是地图你可以使用收集方法我看过专业人士使用收集,虽然都做同样的事情。 – 2012-01-10 06:09:05