У меня есть эти модели:Rails 4: проверка дубликатов в пользовательской модели валидатора
Ofert.rb
class Ofert < ActiveRecord::Base
has_many :shipping_fees
end
Shipping_fee.rb
class ShippingFee < ActiveRecord::Base
belongs_to :ofert
end
имеет атрибут city
. Я хочу, чтобы подтвердить, что пользователь не вводит тот же город за тот же Ofert
Я уже это работает так:
class ShippingFee < ActiveRecord::Base
belongs_to :ofert
validate :not_reapeated_cities
def not_reapeated_cities
ofert = Ofert.find self.ofert_id
ofert.shipping_fees.each do |shipping_fee|
errors.add(:city, "has been already added") if shipping_fee.city == self.city
break if not errors.empty?
end
end
end
Однако я думаю, что есть лучший способ сделать это, я хочу оптимизируйте приложение как можно больше. И когда есть много , это не будет полезно для производительности.
работал прекрасно, вы молодцы! спасибо – SsouLlesS
Привет У меня вопрос, нужно ли 'add_index' строго необходимо? – SsouLlesS
@SsouLlesS Да, ради параллелизма и целостности, вам нужно. Для получения дополнительной информации прочтите это http://apidock.com/rails/v4.2.1/ActiveRecord/Validations/ClassMethods/validates_uniqueness_of – Pavan