我针对遗留SQL Server数据库视图生成了一个脚手架,该视图具有一个没有id列的文本主键。我在模型中有set_primary_key“Gift_ID”,但我在show方法上遇到错误。
我可以列出记录,但是当我点击show链接时,它会出错。它似乎使用id来查找记录,即使我在模型中有set_primary_key。以下是显示错误的完整文本;
NoMethodError in PledgesController#show
undefined method `eq' for nil:NilClass
Rails.root: /home/steve/RubymineProjects/otatest
Application Trace | Framework Trace | Full Trace
app/controllers/pledges_controller.rb:16:in `show'
Request
Parameters:
{"id"=>"PL-24681"}
Show session dump
Show env dump
Response
Headers:
None
任何人都可以解释为什么它还在尝试使用“id”作为关键? 谢谢你的帮助!
答案 0 :(得分:1)
我解决了我的问题,所以我想我会回答我自己的问题,以防它帮助其他人;
我放弃了在模型中使用set_primary_key选项,并使用数据中的关键字段向遗留系统(SQL Server)中的视图添加了“id”字段。这解决了id问题
我还发现生成的脚手架字段名称区分大小写。所以我使用视图将所有字段名称设置为小写。您可以确保您的脚手架案例与旧版字段名称匹配,但我发现将它们全部设置为小写字母更容易。
还有一件事;我有一些传统的布尔字段有一个“?”在字段名称的末尾,脚手架也不喜欢那样,所以我删除了“?”在视图中。
总而言之,在遗留系统之上构建Rails应用程序存在挑战。我通过将表迁移到旧数据库并检查它创建字段的方式然后修改我的视图以匹配来发现我的大部分问题。