我有一个ActiveRecord数组,其中包含商店列表。

shops = Shop.find(:all)


我想从商店中删除一条记录而不将其从数据库中删除。

shops.delete(a_shop)将导致删除SQL查询。我只想从ActiveRecord数组中删除商店,而不是从数据库中删除。

能做到吗?

谢谢

最佳答案

当心,如果您使用has_many关系,JP的答案将不起作用。

扩展示例:

class City < ActiveRecord::Base
  has_many :shops
end

city = City.find(:name => "Portland")


然后

city.shops.delete(city.shops[0])


将从数据库中删除!



theshops = city.shops
theshops.delete(ss[0])


将从数据库中删除

与数据库分离的一种方法是使用压缩或另一种数组函数,如下所示:

theshops = city.shops.compact
theshops.delete(ss[0])


不会从数据库中删除

同样,在所有情况下,delete_if都不会从数据库中删除:

city.shops.delete_if {|s| s.id == city.shops[0]}


干杯!

不要忘记:如果您对这些事情有疑问,脚本/控制台是您的朋友!

10-04 21:38