【问题标题】:Rails rake generated input vs self inputRails rake 生成的输入与自己的输入
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2013-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 1970-01-01
    • 2015-05-03
    相关资源
    最近更新 更多