在Rails after_create中添加默认值

时间:2018-09-24 04:51:13

标签: ruby-on-rails

我有两个模型,id | mat_code | block | quantity 1 | abc | A | 250 2 | abc | B | 200 3 | def | A | 400 4 | def | C | 450 Desk。办公桌属于类型。类型有2个Type:大小。

服务台有两列type_sizewidth

我想根据类型添加默认尺寸。

我在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

设置默认尺寸的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以使用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

或者您可以在new_record上使用before_save,例如:

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