вложенная проверка — модель

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.2

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-3.2

Вопрос:

У меня есть две связанные модели (упрощенные) :

Объявление :

 class Ad < ActiveRecord::Base
has_many :propositions
validates :pricemin
validates :pricemax
...
 

Предложение :

 class Proposition < ActiveRecord::Base
belongs_to :ad
attr_accessible :price_proposition
...
 

Я пытаюсь добавить ограничение для price_proposition (в модели «предложение») между «pricemin» и «pricemax».

Как я мог это сделать?

Спасибо за вашу помощь

Комментарии:

1. Вам необходимо создать проверку jquery

2. Вот пример bestror.wordpress.com/2013/06/29 /…

Ответ №1:

Проверка на стороне клиента с помощью Javascript, безусловно, является одним из способов. Но если вы хотите выполнить проверку на стороне сервера, вы можете сделать что-то вроде этого:

 class Proposition < ActiveRecord::Base

  belongs_to :ad
  attr_accessible :price_proposition

  validate :price_proposition_in_range

  def price_proposition_in_range
    pricemin = self.ad.pricemin
    pricemax = self.ad.pricemax
    if self.price_proposition < pricemin || self.price_proposition > pricemax
      errors.add(:price_proposition, "Must be between #{pricemin} and #{pricemax}")
    end
  end

  .
  .
  .
end
 

И, конечно, вы можете добавить дополнительные проверки в метод, в зависимости от того, хотите ли вы разрешить пробел или нет и т. Д. И т. Д.