Ruby on rails 将db/development.sqlite3替换为db/Listings.sqlite3(预填充数据库)获取错误:未定义方法
您好,我是rails的初学者,我所做的事情对我来说似乎是一个常见的用例,有趣的是,在rails中似乎很难做到,而在互联网上关于这个主题的帖子并不多:Ruby on rails 将db/development.sqlite3替换为db/Listings.sqlite3(预填充数据库)获取错误:未定义方法,ruby-on-rails,ruby,Ruby On Rails,Ruby,您好,我是rails的初学者,我所做的事情对我来说似乎是一个常见的用例,有趣的是,在rails中似乎很难做到,而在互联网上关于这个主题的帖子并不多: 我创建了一个新的rails应用程序。因为我有一个我想包含在我的新rails应用程序中的遗留数据库,所以我用遗留数据库“Listings.sqlite3”替换了“development.sqlite3” 然后,我生成了一个模型“business.rb”,以匹配遗留数据库中的表“business”。下面是它的代码: class Business <
class Business < ActiveRecord::Base
establish_connection "Listings_development"
end
class BusinessesController
上市业务
姓名:
电话号码:
地址:
显示/Users/AM/Documents/RailsWS/cmdLineWS/Directory/app/views/businesss/index.html.erb
第14行的位置:
未定义的方法“公司名称”#
提取的源(第14行附近):
11:
12:
13:
14:
15:
16:
17:
Rails.root:/Users/AM/Documents/RailsWS/cmdLineWS/Directory
Rails怎么了?包含一个遗留数据库真的那么复杂吗?我认为Rails的全部要点是快速原型设计
下面是my Listings.db文件的快照
问题可能是因为企业的列包含空格和大写字符(例如,我在屏幕截图中看到的是“公司名称”,而不是想要的“公司名称”)。我不知道rails是否支持此类属性名称
顺便说一句,在列名中使用空格和其他奇怪的字符不是一个好的做法(我的拙见)顺便说一句,“Rails的全部要点”是构建web应用程序,在我看来,“快速原型设计”和“遗留数据库”这两个词“不属于同一段。您的业务表的结构是什么?只添加了一个包含业务表的my Listings.db的图像。这些列是:“公司名称”、“地址”、“套房号”、“城市”、“省”、“电话号码”、“邮政编码”、“传真号”、“纬度”、“经度”、“网站”ThanksUpdate:我知道正在读取数据库,因为我可以通过在index.html.erb文件的循环中添加以下行将数据库内容转储到浏览器窗口以进行调试:“
”很好,您可以发布business.inspect:)的输出吗?(我很好奇:P)是的,我同意它的坏习惯。我需要改变这一点。但与此同时,我可以在浏览器上看到数据库内容。因此@business(以及我的模型)可以读取所有数据。但这种方法本身存在一些错误(您可以在浏览器中看到数据库内容?顺便说一句,您可以重命名数据库列以使用更好的名称,如“company_name”,然后重试。您可以使用类似SQLite数据库浏览器()的名称。)等等…您不需要从旧版应用程序读取/写入DB内容,rails应用程序是否正确?在这种情况下,重命名列将破坏旧版应用程序…是的,是模型中的列名与数据库表标题不匹配。谢谢。它现在可以工作:)正如@Aldo'xoen'Giambelluca链接到的答案所指出的,另一个通常是最好的选择是使用Rails友好的列名在数据库中创建一个视图。关于处理遗留数据库(相关位从幻灯片19开始),以及在视图上进行
插入
,更新
,以及删除
操作。