我有两个模型reservations
和reviews
我可以使用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
答案 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
。必须存在该字段才能使关联正常工作。