我有一个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]}
干杯!
不要忘记:如果您对这些事情有疑问,脚本/控制台是您的朋友!