Ruby on rails 旧表在设置\u主键时出现问题

Ruby on rails 旧表在设置\u主键时出现问题,ruby-on-rails,Ruby On Rails,我针对旧式SQL Server数据库视图生成了一个scaffold,该视图有一个没有id列的文本主键。我已经在模型中设置了主密钥“Gift\u ID”,但是我在show方法中遇到了一个错误 我可以列出记录,但当我点击show链接时,它会出错。即使我在模型中设置了_primary_键,它似乎仍在使用id来查找记录。以下是显示的错误的完整文本 NoMethodError in PledgesController#show undefined method `eq' for nil:NilClass

我针对旧式SQL Server数据库视图生成了一个scaffold,该视图有一个没有id列的文本主键。我已经在模型中设置了主密钥“Gift\u ID”,但是我在show方法中遇到了一个错误

我可以列出记录,但当我点击show链接时,它会出错。即使我在模型中设置了_primary_键,它似乎仍在使用id来查找记录。以下是显示的错误的完整文本

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”作为密钥吗?
谢谢你的帮助

我解决了我的问题,所以我想我应该回答我自己的问题,以防它对其他人有帮助; 我放弃了在模型中使用set_primary_key选项,并使用数据中的key字段在遗留系统(SQL Server)的视图中添加了一个“id”字段。这解决了id问题。
我还发现生成的scaffolding字段名是区分大小写的。因此,我使用视图将所有字段名设置为小写。您可以确保您的scaffolding case与传统字段名匹配,但我发现将它们全部设置为小写更容易。
还有一件事;我有一些传统的布尔字段,在字段名的末尾有一个“?”,脚手架也不喜欢这样,所以我删除了视图中的“?”


总之,在遗留系统上构建Rails应用程序是有挑战的。通过将表迁移到遗留数据库并检查它创建字段的方式,然后修改视图以匹配,我发现了大多数问题

想发布包含“show”链接以及控制器show方法的视图代码吗?