gpt4 book ai didi

mysql - 未定义方法 `code' 为 nil :NilClass message with rails and a legacy database

转载 作者:可可西里 更新时间:2023-11-01 07:54:47 25 4
gpt4 key购买 nike

我正在设置一个非常简单的 Rails 3 应用程序来查看遗留 MySQL 数据库中的数据。遗留数据库主要是 rails ORM 兼容的,除了外键字段是复数的。例如,我的“订单”表有一个指向“公司”表的外键字段,名为“companies_id”(而不是“company_id”)。所以很自然地,我不得不使用“belongs_to”的“:foreign_key”属性来手动设置字段名称。

我已经有几年没有使用 Rails 了,但我很确定我做的一切都是正确的,但在尝试访问“order.currency.code”时出现以下错误:

undefined method `code' for nil:NilClass

到目前为止,这是一个非常简单的应用程序。我所做的唯一一件事就是为每个遗留数据库表生成应用程序和一堆脚手架。然后我对一些模型进行了调整以适应上述数据库命名约定的差异,并向 View 添加了一些字段。而已。没有有趣的事情。

所以我的数据库表看起来像这样(仅相关字段):

orders
------
id
description
invoice_number
currencies_id

currencies
----------
id
code
description

我的订单模型如下所示:

class Order < ActiveRecord::Base
belongs_to :currency, :foreign_key=>'currencies_id'
end

我的货币模型如下所示:

class Currency < ActiveRecord::Base
has_many :orders
end

相关的 View 片段如下所示:

<% @orders.each do |order| %>
<tr>
<td><%= order.description %></td>
<td><%= order.invoice_number %></td>
<td><%= order.currency.code %></td>
</tr>
<% end %>

我完全没有想法。有什么建议吗?

最佳答案

或者由于您使用的是在 ruby​​ 1.9.2 上运行的 rails 3 应用程序,您还可以使用 orer.currency.try(:code) 来处理可能为 nil 的此类属性。错误正如 Nikita Rybak 所指出的那样

关于mysql - 未定义方法 `code' 为 nil :NilClass message with rails and a legacy database,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4718734/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com