ruby-on-rails - 获取 ActiveRecord::StatementInvalid:重命名模型后找不到表

标签 ruby-on-rails ruby ruby-on-rails-3 activerecord

我之前将我的模型错误地命名为“Companies”。我没有重命名它,而是重命名了所有引用,删除了数据库并通过重新运行迁移重新创建了所有内容。我可以看到从 SQLite 资源管理器中重新创建为“Company”的表,但是当我通过 irb 运行 Company.new 时,我得到:

ActiveRecord::StatementInvalid: Could not find table 'companies'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/connection_adapters/sqlite_adapter.rb:295:in `table_structure'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/connection_adapters/sqlite_adapter.rb:186:in `columns'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/base.rb:680:in `columns'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/persistence.rb:284:in `attributes_from_column_definition'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/locking/optimistic.rb:62:in `attributes_from_column_definition'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/activerecord-3.0.7/lib/active_record/base.rb:1395:in `initialize'
from (irb):1:in `new'
from (irb):1
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands/console.rb:44:in `start'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands/console.rb:8:in `start'
from /Users/emzy/rails/blah/.bundle/ruby/1.9.1/gems/railties-3.0.7/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'

我不确定“公司”的引用来自哪里 - 我在项目目录中找不到任何引用。所有 yml 等看起来都很好。

Controller :

class CompanyDirectoryController < ApplicationController
  before_filter :require_admin, :only => [:new, :create, :edit]
  def new
    @company = Company.new
    @company.companylinks.build
  end

型号:

class Company < ActiveRecord::Base
  validates_presence_of :fullname, :detailed_description, :product_info, :cat_tags, :email
  validates_uniqueness_of :fullname
  has_many :companylinks, :class_name => 'CompanyLinks',
                           :foreign_key => "pid",
                           :dependent => :destroy
  has_attached_file :company_photo, 
                    :styles => { :medium => "300x300>",
                                 :thumb => "100x100>" }
  attr_accessor :photo_file_name
  attr_accessor :photo_content_type
  attr_accessor :photo_file_size
  attr_accessor :photo_updated_at

  accepts_nested_attributes_for :companylinks,
                                :allow_destroy => true
end

路线: 资源:公司,: Controller =>:company_directory

为什么它仍在寻找 company 而不是 Company ?任何帮助都会很棒。

最佳答案

ActiveRecord 正在查找的表名称为 Company 模型。 Rails 使用词形变化来复数模型名称,以形成要在数据库中查询的表的名称。如果您想重命名表或必须使用旧数据库,可以在模型中使用 set_table_name 来设置表名称。

更新:the rails wiki 还有一些其他有用的提示。 .

关于ruby-on-rails - 获取 ActiveRecord::StatementInvalid:重命名模型后找不到表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6463585/

相关文章:

ruby-on-rails - Rails 3、Action Mailer、附件、form_for、电子邮件

ruby-on-rails - 更改 rails 版本

ruby-on-rails - 如何将 GET 参数传递给 Ruby on Rails 中的下一个 Controller 操作?

ruby-on-rails - 每次生成脚手架时,Rails 脚手架 scss 都会重置

ruby-on-rails - 如何重新加载安装到 Rails 应用程序中的 sinatra 模块化应用程序?

ruby-on-rails - 如何在 ActiveRecord 中创建 'OR' 语句?

ruby-on-rails - 语法错误-意外的tIDENTIFIER,期望带有Submit_tag的 ')'

ruby-on-rails - 如何使用 Ruby 中哈希的查询参数构造 URI

ruby - 为什么 Gem 可以安装 gems debase 和 ruby​​-debug-ide 而 Bundler 却不能?

json - 如何从 Ruby on Rails 解析 json 数据或(json 代码)