0
我有挑战,写一个范围,以显示:写作的多个关联一个范围 - 轨道4
- 属于具有支付属于一个特定的用户事件的所有卡
- 我目前能显示,有支付使用范围
scope :booked_events, -> (user) { joins(payments: :user).where(users: { id: user.id }) }
在event.rb文件属于特定用户的所有事件 - 某些事件有一个卡和一些不
could one kindly advise me how i display all events with a card that have payments that belong to a specific user
event.rb
has_many :payments
has_one :card
scope :booked_events_with_cards, -> (user) { joins(payments: :user).where(users: { id: user.id }) }
card.rb
belongs_to :event
payment.rb
belongs_to :event
belongs_to :user
user.rb
has_many :payments
我试过BEL流在card.rb文件,但我不确定
belongs_to :event
has_many :payments, through: :event
scope :cards_belonging_to_booked_events, -> (user) { joins(payments: :event).where(users: { id: user.id }) }
,但得到下面的错误:
2.3.0 :012 > cards.cards_belonging_to_booked_events(user)
Card Load (0.6ms) SELECT "cards".* FROM "cards" INNER JOIN "events" ON "events"."id" = "cards"."event_id" INNER JOIN "payments" ON "payments"."event_id" = "events"."id" INNER JOIN "events" "events_payments" ON "events_payments"."id" = "payments"."event_id" WHERE "users"."id" = 4
SQLite3::SQLException: no such column: users.id: SELECT "cards".* FROM "cards" INNER JOIN "events" ON "events"."id" = "cards"."event_id" INNER JOIN "payments" ON "payments"."event_id" = "events"."id" INNER JOIN "events" "events_payments" ON "events_payments"."id" = "payments"."event_id" WHERE "users"."id" = 4
ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: users.id: SELECT "cards".* FROM "cards" INNER JOIN "events" ON "events"."id" = "cards"."event_id" INNER JOIN "payments" ON "payments"."event_id" = "events"."id" INNER JOIN "events" "events_payments" ON "events_payments"."id" = "payments"."event_id" WHERE "users"."id" = 4
,或者是我写的范围,event.rb文件,如果我想显示所有事件的付款已由用户进行过吗?
谢谢@MikeDiet!我没有意识到你可以添加两个以上的对象(模型)。你能推荐一个很好的资源来学习编写范围(SQL查询)。 – ARTLoe
当然@ARTLoe首先你需要阅读..导轨指南! xD http://guides.rubyonrails.org/active_record_querying.html – MikDiet
谢谢@MikDiet!这太棒了! - 我只是想知道如何在我的问题中写出'cards_belonging_to_booked_events'的范围,因为我花了一些时间阅读你推荐的资源并理解你的答案 - 谢谢!谢谢! – ARTLoe