与外键双向的模型关系

时间:2017-03-24 01:35:39

标签: ruby-on-rails model foreign-keys

我有两个模型reservationsreviews我可以使用reservation.review并在案例中获得正确的输出。但是,当我去review.reservation我没有得到同样的尊重时,我得到关系错误StatementInvalid

评论模型:

 belongs_to :reservation, :foreign_key => :reservation_id, class_name: 'Reservation'
 belongs_to :reviser
 has_one :reviser
  has_one :reservation

  belongs_to :user

预订模式:

has_one :review, :dependent => :destroy

1 个答案:

答案 0 :(得分:1)

关于reviews模型的一些注意事项。你有这一行:

belongs_to :reservation, :foreign_key => :reservation_id, class_name: 'Reservation'

但是由于你正在命名外键reservation_id,这就是rails默认命名外键的原因,你可以简单地删掉那部分并说:

belongs_to :reservation

其次,我不完全确定为什么你有has_one :reservation,因为你已经有belongs_to :reservation。我可能会删除has_one :reservation行,除非你完全确定它应该在那里。

所以你的新reviews模型看起来像这样:

belongs_to :reservation
belongs_to :reviser
has_one :reviser

belongs_to :user

我会仔细检查您的schema.rb文件,以确保您的reservation_id表格中包含字段reviews。必须存在该字段才能使关联正常工作。