Rails rake生成输入vs自输入

时间:2012-03-26 11:18:16

标签: ruby-on-rails ruby rake

我正在尝试使用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]

1 个答案:

答案 0 :(得分:1)

您可以维护多个连接对象。如果将ActiveRecord用于两个数据库连接,则可以指定在每个模型中使用哪个连接。

请参阅: Multiple database connection in RailsHow to best handle per-Model database connections with ActiveRecord?