如何为具有默认值的新对象创建setter方法?

时间:2018-01-11 19:41:24

标签: ruby setter

在我的测试文件中,我有:

def default_product()
  Product.new(title: "default title",
              description: "default description",
              price:       1,
              image_url:   'default_url.png')
end

并希望将其转换为可以在没有args的情况下调用的方法,在这种情况下,将设置默认的attrs,或者使用args,例如:

default_product(price: 100)

在这种情况下,默认价格将被参数覆盖。

实现这一目标的正确方法是什么?

1 个答案:

答案 0 :(得分:3)

使用默认关键字参数:

def default_product(
    title: "default title",
    description: "default description",
    price: 1,
    image_url: 'default_url.png')
  Product.new(
    title: title,
    description: description,
    price: price,
    image_url: image_url)
end

并称之为:default_product(title: "Another title")

旁注:正确的方法可能是使用FactoryBot