rails无法创建新项

时间:2017-06-15 02:37:12

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

我正在创建一个小型rails应用程序,我遇到了一个问题,我认为是在我的数据库的后端,但我不知道如何解决它。最终发生的事情是,如果我尝试转到我的new网址,我会收到一条错误消息,指出PG::UndefinedTable: ERROR: relation "caves" does not exist LINE 8: WHERE a.attrelid = '"caves"'::regclass

所有我试图创建一个新的cafe我去localhost:3000/cafes/new但是出于一些非常恼人的原因,某些地方的洞穴混合在一起,我不知道如何绕过这个。

我的控制器基本上在下面。 (此时控制器中的其余项目都是空方法)

  def new
    @cafe = Cafe.new
  end

  def create
    @cafe = Cafe.new(cafe_params)
  end

  private

  def cafe_params
    params.require(:name, :description)
  end

我的架构表是

  enable_extension "plpgsql"

  create_table "cafes", force: :cascade do |t|
    t.string "name"
    t.text "description"
  end

  create_table "users", force: :cascade do |t|
    t.string "first_name"
    t.string "last_name"
    t.string "email"
    t.integer "age"
  end

我现在有两个空模型,一个名为user.rb,另一个名为cafe.rb

这是我真的很困惑的地方,因为我的模型中没有洞穴关系。

class Cafe < ApplicationRecord
end

这就是我的位置。有谁知道我能用这个做什么?我在想某个地方可能存在重复的数据库,需要将其销毁。我已经尝试了rake db:drop + rake db:create + rake db:migrate路线,但我没有运气。我知道有一种方法可以通过直接的psql打开我的数据库,我认为这可能是真正真正调试这个问题的方法。 (我已经看过它做过一次,但是不记得怎么做了,更不用说只知道活动记录了,而不是sql)

有谁知道这里发生了什么?或者有谁知道如何进入psql以及如何找到这样的东西?

我真的很感激。

3 个答案:

答案 0 :(得分:2)

您是否运行了rake db:createrake db:migrate

因为型号名称Cafe的表名构建是caves

因此,请尝试运行rake db:createrake db:migrate。并重新启动rails sever将解决您的问题。

pry(main)> 'Cafe'.tableize
=> "caves"

答案 1 :(得分:0)

如果您希望多个cafe解析为cafes而不是caves,则可以使用变量来解决此问题。默认情况下,rails会执行此操作

为此,请将其添加到config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'cafe', 'cafes'
end

答案 2 :(得分:0)

&#13;
&#13;
def new
    @cafe = Cafe.new
  end

  def create
    @cafe = Cafe.new(cafe_params)
    @cafe.save
  end

  private

  def cafe_params
    params.require[:modelname].permit(:name, :description)
  end
&#13;
&#13;
&#13;

试用此代码

相关问题