Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 数组操作导致外键删除_Ruby On Rails_Arrays_Activerecord - Fatal编程技术网

Ruby on rails 数组操作导致外键删除

Ruby on rails 数组操作导致外键删除,ruby-on-rails,arrays,activerecord,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 = use

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

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

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\u id
字段条目将从数据库中删除(用户仍然保留)

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


谢谢您

@current_family。用户
不是数组,而是ActiveRecord::Relation

因此,您可以从数据库中删除一条记录,而不是从数组中删除一个元素

尝试缩小查询范围,例如

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

如果您使用的是Rails 4,则可以执行以下操作:
@current\u family.users.where.not(id:@current\u user.id)
不需要
映射:
@current\u family.users.select(:id,:name)。where.not(id:@current\u user.id)
如果我想获得数组,我将如何操作。我是否必须走另一条路
User.where(family\u id:@current\u family.id)
?任何
where
方法返回关系。如果确实需要数组,只需使用
.to_a
-
users=@current\u family.users.to_a