Rails - 多对多关系 - 数据问题?

时间:2010-11-19 17:54:54

标签: ruby-on-rails ruby

我有一个非常新的问题,关于我创建的多对多关系,并从孩子那里提取正确的数据。

我拥有2个模型,一个名为Order,另一个名为Status。我有一个名为CreateOrdersStatuses的迁移来连接这两个表。

在ruby控制台中,我很难通过父母提取孩子的信息,例如:

我已经为我的第一个订单分配了一个状态,并且控制台给了我以下读数:

ruby-1.9.2-p0 > order.statuses
 => [#<Status id: 1, name: "New", created_at: "2010-11-18 20:19:12", updated_at: "2010-11-18 20:19:12">] 

但是,对于我的观点,我正在尝试显示订单的状态,所以我一直在控制台order.statuses.name中尝试以下内容 - 我认为这会给我打印出“新”。相反,我只能在尝试时拉“状态”。例如:

ruby-1.9.2-p0 > order.statuses.name
=> "Status" 

我认为在尝试提取订单的状态名称时,我的问题与语法有关吗?如果有必要,我可以提供模型/迁移,我只是认为这是一个语法问题,因为我是一个新手:)。

谢谢大家。

2 个答案:

答案 0 :(得分:0)

order.statuses.name不会返回“新建”,因为order.statuses是一个集合(您在第一个输出中看到矩形括号)。做order.statuses.name没有任何意义。例如,你可以order.statuses[0].name

然而,order.statuses.name不会抛出错误,因为关联实际上有一个方法name,它返回关联类的名称。在您的情况下,statuses关联类为Status,因此此方法返回“状态”。

答案 1 :(得分:0)

要避免使用icky array-index表示法“[0]”,您可以改为:

order.statuses.first.name

假设您的订单型号

has_many :statuses