【发布时间】:2012-03-27 22:04:39
【问题描述】:
我正在尝试使用 rake-tasks 在 Rails 中开发一个小项目。
首先,我从 rake-call 中获取了一些数据,我想将其存储在数据库中。 问题:当我尝试存储生成的数据时,我总是收到一个错误(未知属性:actuals_cost)。但是当我尝试手动输入时,它可以工作......
这是我的一些代码:
desc "Import Projects from CRM"
task :import_projects_crm => [:environment] do
crm_projects = Crm::Importer.new().import_projects
Project.create(
:order_number => crm_projects[0][0],
:client_name => crm_projects[0][2],
:partner_name => crm_projects[0][1],
:totals_sales_orders => crm_projects[0][3],
:actuals_cost => crm_projects[0][4],
:actuals_sales => crm_projects[0][5],
:external_cost => crm_projects[0][7],
:external_sales => crm_projects[0][8],
:total_change_request => crm_projects[0][6],
:storage_path_sales_order => crm_projects[0][9],
:storage_path_pm => crm_projects[0][10]
)
#Project.create(:actuals_cost => 100) --> works :(
end
数据是从 SQLServer 中提取的,这就是我使用方括号的原因。
编辑:
好的,找到问题了。就像我之前说的。在 rake 中,我与远程数据库 (SQLServer) 建立了连接,并且我想将数据存储在本地数据库 (PostgreSQL) 上。
问题出在连接上。当我从 SQLServer 中提取数据时,您需要从数据库中切换,这就是您可以做到的。
ActiveRecord::Base.establish_connection :[one_of_databasename_in_your_yaml]
【问题讨论】:
-
我想我们需要更多关于如何定义 Project 的详细信息,特别是有关 actuals_cost 字段的信息。您正在初始化环境,这很好。听起来像在 rake 下,您要么得到一些不同的 gem,要么得到不同的数据库连接,或者可能没有数据库连接,...
-
我使用的是 PostgreSQL 数据库。当我“放置”它时,我会从 crm_projects 接收数据。但是当我想存储它时,我不能。只有当我像这样手动执行=> Project.create(:actuals_cost => 100)
-
哦,在 rake 文件中,我与外部数据库 (SQLServer) 建立连接,为了保存新数据,我使用 localhost PostgreSQL 数据库。
-
好的,找到问题了。就像我之前说的。在 rake 中,我与远程数据库 (SQLServer) 建立连接,并且我想将数据存储在本地数据库 (PostgreSQL) 上。问题出在连接上。当我从 SQLServer 提取数据时,您需要从数据库切换,这就是您可以做到的。 ActiveRecord::Base.establish_connection :[one_of_databasename_in_your_yaml]
标签: ruby-on-rails ruby rake