Rails迁移:向一个表添加两个引用

时间:2014-05-09 15:37:52

标签: ruby-on-rails migration

我很难扩展现有模型以包含对单个表的两个引用。

我当前的模型名为Order,我需要两个引用(payment_statedelivery_state)到State表。

我的理解是我应该运行以下命令:

rails g migration AddStatesToOrder payment_state:references delivery_state:references

但是,在schema.rb运行rake db:migrate之后,我的# Could not dump table "orders" because of following NoMethodError # undefined method `[]' for nil:NilClass 会出现以下行:

{{1}}

非常感谢任何帮助。谢谢!

1 个答案:

答案 0 :(得分:1)

你应该这样做:

rails g migration AddStatesToOrder payment_state_id:integer delivery_state_id:integer

在模型中定义这样的关系:

belongs_to :payment_state, class_name: State.model_name
belongs_to :delivery_state, class_name: State.model_name

为什么使用:integer而不是:references?因为你想要做的事情不是“传统的”,它是对同一模型的定制双重关系,而Rails无法为你猜测。