作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在设置一个非常简单的 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/
我是一名优秀的程序员,十分优秀!