当我尝试访问我的一个页面时出现以下错误
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'p478r679_partybot.secretsanta' 不存在: SHOW FIELDS FROM 'secretsanta'): app/controllers/secretsantas_controller.rb:7:in `index'
但是这个表存在于我的数据库中。
只是为了让您了解我的问题的背景,几年前我编写了这个应用程序,直到最近它都运行良好。当我尝试使用瘦服务器启动应用程序时,出现以下错误
你已经激活了 rack 1.4.3,但是你的 Gemfile 需要 rack 1.2.1。使用 bundle exec 可以解决这个问题。(宝石::加载错误)
因此,我向托管服务的技术支持寻求帮助。他们说,
“问题在于 rails 版本与 bundler 版本不兼容。现在我们已将 rails 版本更改为“3.1.10”并安装了捆绑程序“1.2.3”。现在您的网站加载正常。“瘦”服务已在您的服务器中启动。该端口正在侦听应用程序。请参阅下面给出的详细信息。”
他们已经更新了我所有的宝石以使其正常工作。我最初使用的是 Rails 3.0.1 和 Thin 1.2.7。现在我有 Rails 3.1.10 和 Thin 1.5.1。现在应用程序正在加载,所有功能都在工作,除了 Secretsanta。
当我仔细查看错误消息的以下部分“SHOW FIELDS FROM secretsanta”时,我看到表名是“secretsanta”,应该是“secretsanta s ”吗?
我不知道该怎么做,毕竟该应用程序在过去 3 年中运行良好,而且我不确定为什么在更新 gems 后它无法正常工作
这是 Secretsanta 模型 User 模型和 SecretsantasController 的一些代码片段。
秘密圣诞老人.rb
class Secretsanta < ActiveRecord::Base
belongs_to :user
belongs_to :gift_receiver, :class_name => "User"
...
用户.rb
class User < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :first_name, :last_name, :email,
:password, :password_confirmation, :remember_me
validates :first_name, :presence => true
validates :last_name, :presence => true
validate :should_be_invited
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_one :potluck
has_one :secretsanta
has_one :gift_receiver, :through => :secretsanta
has_many :secretsantaExclutions
has_many :excluded, :through => :secretsantaExclutions
has_many :discussions
has_many :comments
...
secretsantas_controller.rb
class SecretsantasController < ApplicationController
before_filter :authenticate_user!
def index
@exclutionList = SecretsantaExclution.find_all_by_user_id(current_user.id)
@event = Event.find_by_id(4)
@rsvp = GuestList.find_by_guest(current_user.email)
@secretsanta = Secretsanta.find_by_user_id(current_user.id) #i am getting the error at this line
end
如果您需要其他信息,请告诉我。提前感谢您的帮助