2014-09-14 3 views
0

У меня есть следующие связанные модели:Rails BELONGS_TO через решение с уникальностью сферой

class Event 
    has_many :orders 
    has_many :tickets, through: :orders 
end 

class Order 
    belongs_to :event 
    has_many :tickets 
end 

class Ticket 
    belongs_to :order 
    ? :event, ?: :order 

    validates :name, uniqueness: { scope: :event } 
end 

Проблема заключается в том, что все, что заливать в двух ? отметках выше, я получаю другую ошибку при проверке экземпляра моих Модель билета. Комбинации, которые я пробовал:

  • delegate/to: Это чистое решение. Однако при проверке билета возникает следующая ошибка: no such column: tickets.event
  • has_one/through: Это на самом деле плохой опыт, так как это касается модели Event при сохранении. Ошибка здесь: undefined method 'event_id' for #<Ticket:0x0000010787c730>

На первый взгляд, кажется, doens't быть способ чисто проверить, если имя на билете для одного события является уникальным или нет. Я что-то упускаю? Существуют ли какие-либо чистые решения этой проблемы?

Спасибо заранее,

Том

ответ

0

Вам не нужно question mark line. Вместо этого попробуйте изменить проверку на

validates :name, uniqueness: true, scope: :event

Ваша модель билет должен всегда belong_to :event. Когда заказ будет размещен, билет должен быть связан с событием, а также с заказом. Это означает, что вам нужно будет добавить event_id:integer в вашу модель билета.

Смежные вопросы