【问题标题】:Join statement in ruby on rails throws up error MySQL::Error: Unknown columnruby on rails 中的 Join 语句引发错误 MySQL::Error: Unknown column
【发布时间】:2017-02-14 09:59:29
【问题描述】:
parts = Participation.joins(:booking).where(bookings: { date_of_booking: Date.yesterday }, payment_status: 2)

我有上面的join语句,即使date_of_booking列存在,mysql也会报错

ActiveRecord::StatementInvalid: Mysql2::Error: 'where 子句'中的未知列'bookings.date_of_booking': SELECT ad_trek_participant.* FROM ad_trek_participant INNER JOIN ad_trek_booking ON ad_trek_booking.Id = ad_trek_participant.Booking_Id 其中bookings.date_of_booking = '2017-02-13' AND ad_trek_participant.payment_status = 2

请在这方面提供任何帮助。

【问题讨论】:

  • ParticipationBooking有什么关联
  • @DeepakMahakale Participation belongs_to BookingBooking has_many Participatipation
  • 能否请您发布两个模型的表结构
  • 我相信你的表名是来自错误的 ad_trek_bookings。不是预订。在你的哪里试试这个名字?看起来您正在使用约定中的差异表名称并将其屏蔽,然后 rails 在此查询中感到困惑
  • @dstull 谢谢,我改成parts = Participation.joins(:booking).where(ad_trek_booking: {date_of_booking: Date.yesterday}) 并且成功了

标签: mysql ruby-on-rails


【解决方案1】:
Participation.joins(:booking).where(payment_status: 2).where("ad_trek_booking.date_of_booking > ?",Date.today - 6.days)

表格名称在wherejoins(:booking) 中更改为ad_trek_booking,给定模型名称,它可以工作。

【讨论】:

    猜你喜欢
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 2016-09-13
    相关资源
    最近更新 更多