Mysql rails无法创建新项
我正在创建一个小的rails应用程序,我遇到了一个我认为是在我的数据库后端的问题,但我不知道如何解决它。最终发生的情况是,如果我尝试转到我的Mysql rails无法创建新项,mysql,ruby-on-rails,ruby,ruby-on-rails-3,Mysql,Ruby On Rails,Ruby,Ruby On Rails 3,我正在创建一个小的rails应用程序,我遇到了一个我认为是在我的数据库后端的问题,但我不知道如何解决它。最终发生的情况是,如果我尝试转到我的
new
url,我会得到一个错误,说明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这有帮助!