- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
当我尝试访问我的其中一个页面时出现以下错误
ActiveRecord::StatementInvalid (Mysql2::Error: Table 'p478r679_partybot.secretsanta' doesn't exist: SHOW FIELDS FROM 'secretsanta'): app/controllers/secretsantas_controller.rb:7:in `index'
但是这个表存在于我的数据库中。
为了让您了解我的问题的背景,我在几年前编写了这个应用程序,直到最近它都运行良好。当我尝试使用瘦服务器启动应用程序时,出现以下错误
You have already activated rack 1.4.3, but your Gemfile requires rack 1.2.1. Using bundle exec may solve this. (Gem::LoadError)
因此,我向托管服务的技术支持寻求帮助。他们说,
“The problem was that the rails version was not compatible with the bundler version. Now we have changed the rails version to "3.1.10" and have installed the bundler "1.2.3 ". Now your website is loading fine.The "thin" service is started in your server. The port is listening to the application. Refer the details given below.”
他们更新了我所有的 gem 以使其正常工作。我最初使用的是 Rails 3.0.1 和 thin 1.2.7。现在我有 Rails 3.1.10 和 thin 1.5.1。现在应用程序正在加载,所有功能都在工作,Secretsanta 除外。
当我仔细查看错误消息的以下部分时,“SHOW FIELDS FROM secretsanta”我看到表名是“secretsanta”,它应该是“secretsantas”吗?
我不确定该怎么做,毕竟该应用程序在过去 3 年中运行良好,我不确定为什么在更新 gems 后它无法运行
这是 Secretsanta 模型用户模型和 SecretsantasController 的一些代码片段。
secret 圣塔.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
如果您需要其他信息,请告诉我。提前感谢您的帮助
最佳答案
我相信您对 secretsanta 表名的怀疑是正确的。
除非您在 secretsanta 模型上设置了 table_name,否则 Rails 将查找名为 secretsantas
的表。如果该应用程序之前运行正常,我猜该表实际上被命名为 secretsantas
。
要列出可用表,请运行:
tables = ActiveRecord::Base.connection.tables
啊,问题来了:
'Secretsanta'.pluralize
=> "Secretsanta"
尝试在模型中指定表名:
class Secretsanta < ActiveRecord::Base
self.table_name = "secretsantas"
end
关于mysql - 获取表不存在错误,但表确实存在(ActiveRecord::StatementInvalid Mysql2::Error: Table doesn't exist),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19937286/
我想知道如何使用 CaSTLe AR 来“播种”自动递增的主键值?例如,希望 Orders 表的主键从 10000 开始。这是 1. 可能的 2. 创建订单号的好解决方案吗? 也许有一种方法可以在不是
假设你想 records = Model.all records.to_a.map{|m| m.serializable_hash(:root => true)} 就像 to_json(:root =
我目前正在尝试开发一个插件/gem 来观察多个模型。理想情况下,观察者应该只用一个单例方法自动实例化...... class MyModel true observe ActiveRecord:
使用 Mysql 我可以使用 COALESCE仅更新表中为空的值。 我怎样才能用 Rails (ActiveRecord) 做到这一点? 我不想创建 if表中每一列的语句,我猜如果我将 ActiveR
我从 Yii2 开始,想要将一些内容保存到我的数据库中。这是我的模型: class Course extends ActiveRecord { public $name; public
我正在开始一个新项目,最近我发现了 caSTLe 项目 activerecord,这似乎是一个很棒的解决方案,但与此同时,它看起来确实是非常规的。我想知道,这种感觉是来自学习新东西(我应该习惯它)还是
不知何故,我总是在周五收到这些。 我之前的问题是关于同样的问题,但我现在可以缩小范围: 我一整天都在研究这个问题,试图理解它。我有一个带有 lock_version 列的表,如此指定: add_col
我正在使用表中缓存的关键字构建搜索。在表中查找用户输入的关键字之前,它会被规范化。例如,删除了一些标点符号,如“-”,并标准化了大小写。然后使用规范化的关键字来查找获取搜索结果。 我目前正在使用 be
我有以下类用于“项目”和“颜色”之间的多对多关系。 并且“项目”不应该有重复的“颜色”,例如:-如果“Item1”有“Blue”和“Red”,那么我们不能向“Item1”添加另一个“Red” 这是正确
我对 Yii2 事件记录处理关系属性的方式感到困惑。是否可以将事件记录对象链接到另一个对象而不先保存它? 例如,我想将图像作为 Logo 添加到公司记录中,但尚未决定是否应保存这两个记录。给定一家公司
我决定使用 Castle ActiveRecord 为客户制作一个系统,一切都很顺利,直到我发现交易不起作用,例如; TransactionScope t = new T
Yii2 的新特性。 只是试图从 ActiveRecord 查询中获得返回。我意识到使用 Yii2 约定可能有更简单的方法来做到这一点 public function actionGet_permis
我收到一个错误(在 Sinatra + ActiveRecord Heroku 上)数据库配置没有指定适配器。 根据一些研究,这似乎是因为 Heroku 预计在 rackup 期间不使用环境变量。 我
我正在尝试按“created_at”日期查找记录 - 数据库列类型为“日期时间”并且 我正在使用来自 jQuery 的 UI DatePicker 我的网址如下所示:“localhost:3000/u
我想问这个问题。但我认为 BlameableBehavior和 TimestampBevavior可能是需要这样做的好例子: 我必须做什么才能使属性只能从 ActiveRecord 对象的外部读取而不
这是一个古老的问题,其中给定一个具有“类型”、“品种”和“价格”属性的表,您可以获取每种类型的最低价格的记录。 在 SQL 中,我们可以做 this通过: select f.type, f.varie
这似乎是一个微不足道的问题,但是我能想到的所有明显的解决方案都有自己的缺陷。 我们想要的是能够为新记录设置任何默认的 ActiveRecord 属性值,以使其在验证之前和期间可读并且不干扰用于搜索的派
做关联方法,比如has_many定义的那些和 belongs_to利用 ActiveRecord::Relation ? 如果是这样,是否有可能获得 ActiveRecord::Relation正在使
如何将 MySQL 的 WHERE 转换为 ActiveRecord :condition? SELECT * FROM users WHERE LENGTH(users.last_name) [
当使用带有 ActiveRecord T4 模板的 SubSonic 3 时,生成的代码会显示许多关于 CLS 合规性、未使用的项目和缺少 GetHashCode() 实现的警告。 为了避免它们,我做
我是一名优秀的程序员,十分优秀!