Ho un modello con una colonna active
, che è un valore booleano. Voglio convalidare l'unicità di tutti i record appena aggiunti rispetto allo company_id
, in modo tale da poter aggiungere tutti i record che voglio con lo stesso company_id
alla tabella finché active
è impostato su false
. Ci dovrebbe essere solo un record active
per ogni company_id
.Rails 3 convalida univocità di un valore rispetto a una colonna?
Come scriverei questo? Ho già provato:
validates :company_id, :uniqueness => { :scope => :active }
ma che sembra convalidare anche contro combinazioni uniche di active
essere false
(in modo tale che non potrò mai avere più di due company_id
s' nella tabella con la stessa active
status, a prescindere dalla cosa è active
) - la convalida di cui sopra consente due record per company_id
, uno con active = false
e l'altro con active = true
. Una volta che quei due record sono in, la convalida blocca tutto il resto.
Allora ho provato ad aggiungere questo:
scope :active, where(:active => true)
Ma questo non sembra aver cambiato la validazione a tutti (stesso problema come sopra).
Come posso scrivere questo convalida in modo che io possa aggiungere il numero di record con lo stesso company_id
finché active
è falso, e consentendo solo una active = true
per company_id
?
Questo non rende il mio primo passaggio banco di prova, in cui cerco di aggiungere un nuovo record in una tabella vuota con 'active' impostato a' true', quindi convalidare con o non un altro nuovo record con 'active' impostato su' true' è valido o meno (entrambi con lo stesso 'company_id'). In realtà, sembra che il Proc non venga mai chiamato. – neezer
Questo _answer_ è rotto in molti modi. – smathy