我正在尝试使用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]
答案 0 :(得分:1)
您可以维护多个连接对象。如果将ActiveRecord用于两个数据库连接,则可以指定在每个模型中使用哪个连接。
请参阅: Multiple database connection in Rails 和 How to best handle per-Model database connections with ActiveRecord?