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