2016-04-06 4 views
1

Hallo Ich erstelle 3 Modelle mit Rubinschienen Aber ich habe ein Problem. Hier ist mein ModellcodeRuby Rails Record Assoziationen (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 

Ich wollte es Unternehmen viele Produkte durch Schwebende umgekehrt hat, es hat gut funktioniert, aber ist es eine Möglichkeit, nur 1 anhängiges Modell zwischen Unternehmen und Produkt zu setzen.

Here's my currently model

I want to make it like this

+0

Was meinen Sie mit ** gibt es eine Möglichkeit, nur 1 ausstehendes Modell zwischen Firma und Produkt ** zu setzen? – dp7

+0

zum Beispiel hat die Firma zwei ausstehende gehört zum gleichen Produkt. aber ich möchte machen, dass nur ein ausstehendes model existiert, gehört zu unternehmen und produkt ... sry es ist schwer zu erklären. –

+0

Wenn Sie nur eine pro Produkt/Firma ausstehen lassen möchten, sollten Sie die Assoziation 'has_one' verwenden. – dp7

Antwort

1

Eine Option: Sie können den Verein verlassen, wie ist, aber fügen Sie die folgende Validierung

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

mehr pending.rb siehe hier: rails validation docs

Dies stellt sicher, dass Sie nur eine pro Firma und Produkt anhängig haben können ... aber viele pending fo r die Unternehmen in Bezug auf andere Produkte.

+1

Danke..Es war so hilfreich .. –