Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql rails无法创建新项_Mysql_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Mysql rails无法创建新项

Mysql rails无法创建新项,mysql,ruby-on-rails,ruby,ruby-on-rails-3,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,我正在创建一个小的rails应用程序,我遇到了一个我认为是在我的数据库后端的问题,但我不知道如何解决它。最终发生的情况是,如果我尝试转到我的

我正在创建一个小的rails应用程序,我遇到了一个我认为是在我的数据库后端的问题,但我不知道如何解决它。最终发生的情况是,如果我尝试转到我的newurl,我会得到一个错误,说明
PG::UndefinedTable:error:relation“caves”不存在第8行:其中a.attrelid=“'caves'”::regclass

我所要做的就是创建一个新的
咖啡馆
我去了
本地主机:3000/咖啡馆/新的
,但由于一些非常恼人的原因,我不知怎的在混合中找到了洞穴,我不知道该如何解决这个问题

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

我的模式表是

  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

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'cafe', 'cafes'
end
这就是我真正困惑的地方,因为我的模型中没有洞穴关系

class Cafe < ApplicationRecord
end
class Cafe
这就是我现在的位置。有人知道我能用这个做什么吗?我认为可能有一个重复的数据库在某处,它需要被销毁。我已经尝试了一个
rakedb:drop
+
rakedb:create
+
rakedb:migrate
路径,但运气不好。我知道有一种方法可以通过直接的psql打开我的数据库,我认为这可能是真正调试这个问题的方法。(我看过一次,但不记得怎么做,更不用说只知道活动记录,而不知道sql了)

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


我真的很感激

您是否运行了
rakedb:create
rakedb:migrate

因为使用模型名
Cafe
生成的表名是
caves

所以试着运行
rakedb:create
rakedb:migrate
。重启rails服务器将解决您的问题

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

如果希望将
cafe
复数解析为
cafe
而不是rails默认使用的
caves
,则可以使用屈折来解决此问题

要执行此操作,请将其添加到您的
config/initializers/definctions.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.irregular 'cafe', 'cafes'
end
def新建
@新咖啡馆
结束
def创建
@咖啡厅=新咖啡厅(咖啡厅)
@拯救咖啡馆
结束
私有的
def cafe_params
参数.require[:modelname].permit(:name,:description)

结束
error表示关系为“caves”,而您的模型为“cafe”,是否存在拼写错误?您能展示您的模型吗?我想可能存在拼写错误,但我对我所拥有的内容感到满意,我没有看到它。嘿,巴德,谢谢您的查看。这是我尝试的第一件事,但并没有完全解决问题。我想当我把所有的东西放在一起的时候,整个
洞穴
进入了混合状态,不管我对数据库做了什么,它仍然在那里徘徊。这最终解决了问题,允许我继续。老实说,我不太明白什么是主动支持拐点,但我很高兴我能继续这样做。您是否知道一些关于屈折变化的好文档,我可以研究一下?rails的ActiveRecord将表名解析为
leaves
到ActiveRecord模型类
Leaf
caves
到ActiveRecord模型类
Cafe
,反之亦然(即带有“ves”的表格被分解为带有“f”的奇异模型类)默认情况下..如果您不想更改,那么这些假定的翻译可以更改为屈折因子..当您在
config/initializers/definctions.rb
中如上所述配置首选翻译时,这意味着
cafe
是表
cafes
中的单个条目。您可以在此处阅读更多信息..Hop这有帮助!