gpt4 book ai didi

ruby-on-rails - 在已存在的集合中添加对象时引发异常

转载 作者:行者123 更新时间:2023-12-02 06:21:14 24 4
gpt4 key购买 nike

我正在使用 <<

将对象添加到集合中
current_user.followers<<users

当用户中的用户已存在于关注者集合中时,我想捕获异常。我该怎么做?

谢谢。

附言。在谷歌上输入“<<”真的很难找到结果,是否有调用此方法的名称?

最佳答案

您可以覆盖 <<追随者协会的方法。还要注意 :push:concat也是 :<< 的别名所以你也必须覆盖它们。这是您应该放入重写的关联方法中的定义,以便在关注者已经存在的情况下引发错误。

class User < ActiveRecord::Base
has_many :followers do
def <<(*records)
result = true
load_target if @owner.new_record?
transaction do
flatten_deeper(records).each do |record|
raise_on_type_mismatch(record)
raise 'Record Already Exists' if @owner.send(@reflection.name).exists? record
add_record_to_target_with_callbacks(record) do |r|
result &&= insert_record(record) unless @owner.new_record?
end
end
end

result && self
end
alias_method :push, :<<
alias_method :concat, :<<
end
end

关于ruby-on-rails - 在已存在的集合中添加对象时引发异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9163277/

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