我有一个非常新的问题,关于我创建的多对多关系,并从孩子那里提取正确的数据。
我拥有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"
我认为在尝试提取订单的状态名称时,我的问题与语法有关吗?如果有必要,我可以提供模型/迁移,我只是认为这是一个语法问题,因为我是一个新手:)。
谢谢大家。
答案 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