gpt4 book ai didi

ruby-on-rails - 如何在 find_or_initialize_by 中区分 Rails 4 中的查找条件和初始化属性

转载 作者:行者123 更新时间:2023-12-04 06:25:32 38 4
gpt4 key购买 nike

在 Rails 3 之前,您可以使用 find_or_initialize_by_name('Name', extra_attribute: 'value') 区分查找条件和初始化属性。这仅按名称查找记录,标准不包括用于初始化的额外属性。

但是在 Rails 4 中你只能传递一个散列参数并且完整的散列包含在条件中,或者我错了吗?

那么如何在 Rails 4 的 find_or_initialize_by 中区分查找条件和初始化属性?

最佳答案

您可以使用 create_with指定新属性:

new_obj = MyClass.create_with(extra_attribute: 'Value').find_or_initialize_by(name: 'Name')

或者您可以将一个 block 传递给 find_or_initialize_by,它会为已初始化的对象(以及未找到的对象)调用:

new_obj = MyClass.find_or_initialize_by(name: 'Name') do |obj|
obj.extra_attribute = 'Value'
end

关于ruby-on-rails - 如何在 find_or_initialize_by 中区分 Rails 4 中的查找条件和初始化属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23493634/

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