Rails 3: Как проверить, что A <B, где A и B оба являются модельными атрибутами? - PullRequest
7 голосов
/ 28 декабря 2010

Я хотел бы подтвердить это customer_price >= my_price.Я попробовал следующее:

class Product < ActiveRecord::Base
  attr_accessor :my_price
  validates_numericality_of :customer_price, :greater_than_or_equal_to => my_price
  ...
end

(customer_price - это столбец в таблице Products в базе данных, а my_price - нет.)

Вот результат:

NameError in ProductsController#index
undefined local variable or method `my_price' for #<Class:0x313b648>

Как правильно сделать это в Rails 3?

Ответы [ 2 ]

13 голосов
/ 28 декабря 2010

Создать пользовательский валидатор:

validate :price_is_less_than_total

# other model methods

private

  def price_is_less_than_total
    errors.add(:price, "should be less than total") if price > total
  end
3 голосов
/ 28 декабря 2010

Вам нужно сделать конкретную проверку:

validate :more_than_my_price

def more_than_my_price
  if self.customer_price >= self.my_price
    errors.add(:customer_price, "Can't be more than my price")
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...