Добавить значение по умолчанию в Rails after_create - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть две модели, Desk и Type.Стол принадлежит типу.Тип имеет 2 type_size: маленький и большой.

Рабочий стол имеет 2 столбца: width и length.

Я хотел бы добавить размеры по умолчанию в зависимости от типа.

Я попробовал это в моей Desk модели:

before_validation :add_dimensions, on: :create

private
def add_dimensions
  if self.type.type_size == 'small'
    self.width = 40
    self.length = 50
  else
    self.width = 60
    self.length = 80
  end
end

Но это не работает, я попытался изменить before_validation на after_create или что-то подобное, и я получил Stack level too deep

Как лучше всего установить размеры по умолчанию?

1 Ответ

0 голосов
/ 24 сентября 2018

Вы можете использовать before_create:

before_create :add_dimensions

private
def add_dimensions
  if self.type.type_size == 'small'
    self.width = 40
    self.length = 50
  else
    self.width = 60
    self.length = 80
  end
end

Или вы можете использовать before_save для new_record, например:

before_save :add_dimensions, :if => :new_record?

private
def add_dimensions
  if self.type.type_size == 'small'
    self.width = 40
    self.length = 50
  else
    self.width = 60
    self.length = 80
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...