Mat*_*hew 2 activerecord ruby-on-rails
我正在使用<<将对象添加到集合中
current_user.followers<<users
Run Code Online (Sandbox Code Playgroud)
当用户中的用户已存在于关注者集合中时,我想捕获异常.我怎样才能做到这一点?
谢谢.
PS.通过输入"<<"在Google上找到结果真的很难,是否有名称来调用此方法?
您可以覆盖<<关注者关联的方法.还需要注意的是: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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1376 次 |
| 最近记录: |