Rails在尝试插入时无法找到用户记录

时间:2015-06-01 01:25:44

标签: mysql ruby-on-rails ruby ruby-on-rails-3 deployment

首先是重要信息。我有一台运行Ubuntu 14.04桌面,MySQL服务器5.6和带有rails 4.2.0.beta2的ruby 2.1.3的开发机器。我在MySQL中开发了一个带有两个简单表的应用程序,称为用户和列表。我的应用在这台机器上运行得很漂亮。我现在正将它迁移到生产机器。只有配置的主要区别在于它运行的是Ubuntu的服务器版而不是桌面版。但是版本相同。配置该机器后,我检查了我的应用程序从源代码管理到生产。在设置数据库时,我能够执行rake db:create和rake db:schema:load without issue。我通过直接运行SQL查询到mysql来验证这一点。我的问题是我无法通过我的rails应用程序插入任何数据 注意我仍然需要完全配置Phusion和Apache,所以我现在正在从命令行和控制台运行。我还没有通过我的网页进行测试。

当我尝试使用

为一个记录数据库播种users表时
bundle exec rake db:seed

我收到以下错误:

ArgumentError: users does not exist to be imported into. Use create_index! or the :force option to create it.

当我直接检查它查询mysql时,它确实有那个表。当我在其上运行跟踪时,我得到:

** Invoke db:seed (first_time)
** Execute db:seed
** Invoke db:abort_if_pending_migrations (first_time)
** Invoke environment (first_time)
** Execute environment
** Execute db:abort_if_pending_migrations
rake aborted!

我尝试使用rails控制台直接输入数据(更改名称和数据值以保护无辜者)

2.1.3 :001 > u=User.create :userid => 1, :firstname => "FName", :lastname => "LName", :email => "me@myemail.edu", :title => "Research Scientist", :department => "PSC", :building => "Big Hall", :officenumber => "123", :phonenumber => "555-555-5555", :password => "my password", :password_confirmation => "my password", :admin => true

这给了我同样的失败:

我完全陷入了失败的境地。我将Gemfile包含在有人看到某些内容的机会中,但同样的文件在开发时也能完美运行。

source 'http://rubygems.org'
ruby '2.1.3'

#ruby-gemset=pfinder

gem 'rails', '4.2.0.beta2'
gem 'sass-rails', '5.0.0.beta1'
gem 'bootstrap-sass', '3.2.0.0'
gem 'sprockets', '2.12.2'
gem 'bcrypt', '3.1.7'
gem 'faker', '1.4.2'
gem 'will_paginate', '3.0.7'
gem 'bootstrap-will_paginate', '0.0.10'
gem 'mini_portile', '0.6.0'
gem 'uglifier', '2.5.3'
gem 'coffee-rails', '4.0.1'
gem 'jquery-rails', '3.1.2'
gem 'turbolinks', '2.3.0'
gem 'jbuilder', '2.1.3'
gem 'rails-html-sanitizer', '1.0.1'
gem 'sdoc', '0.4.0', group: :doc
gem 'yaml_db'
gem 'json'
gem 'elasticsearch-model', git: 'git://github.com/elasticsearch/elasticsearch-        rails.git'
gem 'elasticsearch-rails', git: 'git://github.com/elasticsearch/elasticsearch-rails.git'
gem 'mysql2', '0.3.18'

提前感谢您提出有关追逐此事的任何建议。

克里斯

1 个答案:

答案 0 :(得分:2)

您需要创建索引。像这样:

$ rails console

# Create the index for the User model
> User.__elasticsearch__.create_index!
=> {"acknowledged"=>true}

# Import the records
> User.import
  User Load (3.2ms)  SELECT  "users".* FROM "users"  ORDER BY "users"."id" ASC LIMIT 1000

官方文档在这里:https://github.com/elastic/elasticsearch-rails/tree/master/elasticsearch-model