首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails5添加引用来创建一个到多个

问Rails5添加引用来创建一个到多个
EN

Stack Overflow用户
提问于 2016-07-27 02:44:08
回答 1查看 100关注 0票数 0

我创建了两个模型,称为Restaurant和menu,以及Restaurant has_many菜单。我通过输入创建菜单

代码语言:javascript
复制
rails g model Menu name restaurant:references

但是我发现我不能按Menu.create(name: "test1")类型创建菜单

代码语言:javascript
复制
m1 = Menu.create(name: "test1")
   (0.2ms)  BEGIN
   (0.2ms)  ROLLBACK
 => #<Menu id: nil, name: "test1", restaurant_id: nil, created_at: nil, updated_at: nil>

然后我检查了migration和schema,在Rails5迁移中,references变成了

代码语言:javascript
复制
#Menu migration
...
t.references :restaurant, foreign_key: true

我想在Rails4里,我会觉得

代码语言:javascript
复制
t.references :restaurant, index: true

这就是我不能创造我的原因吗?

更新

这是迁移文件

代码语言:javascript
复制
class CreateMenus < ActiveRecord::Migration[5.0]
  def change
    create_table :menus do |t|
      t.string :name
      t.references :restaurant, foreign_key: true

      t.timestamps
    end
  end
end
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-27 04:30:17

您无法创建菜单,因为您的迁移在restaurant_id上包含一个外键约束,这意味着没有餐厅就无法创建菜单(同样,如果存在关联菜单,则无法销毁餐厅)。如果这是您的意图,您需要在创建菜单时提供一个有效的restaurant_id,或者通过restaurant上的关联来创建它

代码语言:javascript
复制
@restaurant.menus.create(name: 'test1')

如果不需要外键约束,则修改迁移并删除:foreign_key选项。如果这样做,请将:index选项设置为true。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38602854

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档