2016-04-06 6 views
1

Привет Я создаю 3 модели с рубиновыми рельсами Но у меня есть некоторые проблемы. Вот мой код моделиRuby Rails Record Associations (has_many: through)

class Company < ActiveRecord::Base 
    has_many :pendings 
    has_many :products, :through => :pendings 
end 

class Product < ActiveRecord::Base 
    has_many :pendings 
    has_many :companies, :through => :pendings 
end 

class Pending < ActiveRecord::Base 
    belongs_to :company 
    belongs_to :product 
end 

Я хотел сделать его компания может иметь много продуктов через ожидание наоборот, он работал хорошо, но есть ли способ установить только 1 отложенную модель между компанией и продуктом.

Here's my currently model

I want to make it like this

+0

Что вы подразумеваете под **, есть ли способ установить только одну ожидающую модель между компанией и продуктом **? Например, – dp7

+0

, компания имеет два ожидающих относится к одному продукту. но я хочу, чтобы существовала только одна ожидающая модель, принадлежащая компании и продукту ... трудно объяснить. –

+0

Если вы хотите сохранить только один отложенный продукт/компанию, то вы должны использовать ассоциацию 'has_one'. – dp7

ответ

1

Один из вариантов: вы можете оставить ассоциацию как есть, но добавить следующую проверку в pending.rb

validates :company_id, uniqueness: {scope: :product_id} 

увидеть здесь: rails validation docs

Это гарантирует, что у вас может быть только один ожидающий решения для каждой компании и продукта ... но многие завитушки для r компании в отношении других продуктов.

+1

Спасибо .. Это было так полезно .. –

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