代码之家  ›  专栏  ›  技术社区  ›  Tom Bom

创建后在Rails中添加默认值

  •  0
  • Tom Bom  · 技术社区  · 6 年前

    我有两个模型, Desk Type . 这张桌子属于那种类型。类型有2 type_size :大小。

    书桌有两列, width length

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

    我在我的房间里试过这个 办公桌

    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 回复  |  直到 6 年前
        1
  •  1
  •   tekuri    6 年前

    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
    

    或者您可以在保存到新\u记录之前使用,例如:

    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