gpt4 book ai didi

ruby-on-rails - Rails find_or_create_by 多个属性?

转载 作者:行者123 更新时间:2023-12-02 08:30:18 35 4
gpt4 key购买 nike

active-record 中有一个方便的动态属性,称为 find_or_create_by:

Model.find_or_create_by_<attribute>(:<attribute> => "")

但是如果我需要通过多个属性来 find_or_create 该怎么办?

假设我有一个模型来处理组和成员之间的 M:M 关系,称为 GroupMember。我可能有很多 member_id = 4 的实例,但我不希望有多个 member_id = 4 和 group_id = 7 的实例。我试图弄清楚是否可以做这样的事情:

GroupMember.find_or_create(:member_id => 4, :group_id => 7)

我意识到可能有更好的方法来处理这个问题,但我喜欢 find_or_create 想法的便利性。

最佳答案

多个属性可以用and连接:

GroupMember.find_or_create_by_member_id_and_group_id(4, 7)

(如果您不想立即保存记录,请使用find_or_initialize_by)

编辑:上述方法在 Rails 4 中已弃用。新的方法是:

GroupMember.where(:member_id => 4, :group_id => 7).first_or_create

GroupMember.where(:member_id => 4, :group_id => 7).first_or_initialize

编辑2:并非所有这些都是从 rails 中提取出来的,只是属性特定的。

https://github.com/rails/rails/blob/4-2-stable/guides/source/active_record_querying.md

示例

GroupMember.find_or_create_by_member_id_and_group_id(4, 7)

成为了

GroupMember.find_or_create_by(member_id: 4, group_id: 7)

关于ruby-on-rails - Rails find_or_create_by 多个属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3046607/

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