0

当我运行我的应用程序时,我想将我的测试数据自动存储在数据库中。

以下是我要使用的数据:

INSERT INTO `crm_donation_email_types` (`id`, `emailtype`, `created_at`, `updated_at`) VALUES
(1, 'to', '2013-08-28 05:19:08', '2013-08-28 05:19:08'),
(2, 'cc', '2013-08-28 05:19:15', '2013-08-28 05:19:15'),
(3, 'bcc', '2013-08-28 05:19:26', '2013-08-28 05:19:26'),
(4, 'from', '2013-08-28 05:19:35', '2013-08-28 05:19:35');

我想知道在哪里添加这些行??我也不想运行,rake db:migration/seed 但我希望当我启动我的应用程序(如启动服务器)时,它应该包含在数据库中。任何想法???

4

2 回答 2

0

1)创建一个文件config/initializers/test_data.rb

2)在那个文件中

  conn = ActiveRecord::Base.establish_connection( :adapter => "mysql", :host => "localhost", :username => "myuser", :password => "mypass", :database => "test_database" )

  conn.execute("INSERT INTO 'crm_donation_email_types' ('id', 'emailtype', 'created_at', 'updated_at') VALUES   (1, 'to', '2013-08-28 05:19:08', '2013-08-28 05:19:08'), (2, 'cc', '2013-08-28 05:19:15', '2013-08-28 05:19:15'), (3, 'bcc', '2013-08-28 05:19:26', '2013-08-28 05:19:26'), (4, 'from', '2013-08-28 05:19:35', '2013-08-28 05:19:35');") 
于 2013-08-30T11:04:56.493 回答
0

有什么理由不能使用fixturesfactory_girl吗?

要使用固定装置,您可以将yaml文件放入spec/fixturestest/fixtures命名crm_donation_email_types.yml,其内容将是

to:
  id: 1
  email_type: to
  updated_at: <%= DateTime.parse '2013-08-28 05:19:08' %>
  created_at: <%= DateTime.parse '2013-08-28 05:19:08' %>

cc:
  id: 2
  email_type: cc
  updated_at: <%= DateTime.parse '2013-08-28 05:19:15' %>
  created_at: <%= Datetime.parse '2013-08-28 05:19:15' %>

bcc:
  id: 3
  email_type: bcc
  updated_at: <%= DateTime.parse '2013-08-28 05:19:26'
  created_at: <%= DateTime.parse '2013-08-28 05:19:26'

from:
  id: 4
  email_type: from
  updated_at: <%= '2013-08-28 05:19:35' %>
  created_at: <%= '2013-08-28 05:19:35' %>

当你为这个特定模型运行单元测试时,Rails 会根据这个文件插入记录。如果您在其他测试中需要这些固定装置,请使用fixtures类方法。阅读2.3 The Low-Down on Fixtures了解所有细节。

如果您决定使用 factory_girl,请阅读GETTING_STARTED指南。

于 2013-08-30T11:24:10.343 回答