gpt4 book ai didi

ruby - 工厂女孩 : Can we check if an attribute has been overridden in its lazy attribute block?

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:03 25 4
gpt4 key购买 nike

我需要知道工厂调用者是否为属性(惰性) block 中的属性(覆盖)提供了一个值。当某些属性相互依赖时会非常有用。

factory :shipping_item do
quantity { % here, I would need to know if 'quantity' was overridden % }
end

最佳答案

答案是:不是以受支持/公共(public) API 方式。

根据本期https://github.com/thoughtbot/factory_girl/issues/583 , FactoryGirl 作者不希望支持此功能。

虽然没有记录(因此更容易发生变化),但您可以在实例变量@overrides 中访问覆盖的参数。它是一个带有符号键的哈希。

factory :shipping_item do
quantity { @overrides[:other_attribute] || do_something_else }
end

# You can also even differentiate between the user
# not supplying an override at all, or supplying nil
# by checking @overrides.keys?(:other_attribute)

虽然我不太理解您的示例代码。您在 block 内的代码已经知道数量是否被覆盖,否则该 block 将无法运行!

关于ruby - 工厂女孩 : Can we check if an attribute has been overridden in its lazy attribute block?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31205859/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com