【发布时间】:2020-01-23 16:28:05
【问题描述】:
假设有一个名为Job 的活动记录模型,它有一个数组列follower_ids。我已经创建了一个允许获取用户后面的所有作业的范围:
# Returns all jobs followed by the specified user id
def self.followed_by(user_id)
where(
Arel::Nodes::InfixOperation.new(
'@>',
Job.arel_table[:follower_ids],
Arel.sql("ARRAY[#{user_id}]::bigint[]")
)
)
end
# Retrieve all jobs followed by user with id=1
Job.followed_by(1)
有没有办法使用数据库从follower_ids 列中删除特定元素(即,不循环通过活动记录对象并为每个对象手动调用delete/save)?
例如,最好执行Job.followed_by(1).remove_follower(1) 之类的操作,只需一个查询即可从所有这些作业的follower_ids 中删除具有id=1 的用户。
【问题讨论】:
标签: ruby-on-rails postgresql activerecord