数组操作导致外键移除

时间:2014-12-22 15:50:09

标签: ruby-on-rails arrays activerecord

我想查询数据库并将其存储在数组中。然后我想从数组中删除一个项目并给出整个数组并将其传递给视图。

在这个模式中,每个家庭都有很多用户。

if user_logged_in
    users = @current_family.users

    users.each do |user|
        if user.id == @current_user.id
            users.delete(user)
        end
    end
    @users = users.map {|user| [user.id, user.name]}
end

每当我从数组中删除用户时,从数组中删除的用户的family_id字段条目将从数据库中删除(用户仍然存在)。

我如何构造它以确保没有触及数据库条目(外键等)。

谢谢

1 个答案:

答案 0 :(得分:2)

@current_family.users不是数组,它是ActiveRecord :: Relation delete

所以你delete来自数据库的记录,而不是数组中的元素。

尝试缩小查询范围,例如

if user_logged_in
  @users = @current_family.users.where("id != ?", @current_user.id).map {|user| [user.id, user.name]}
end
相关问题