Tar*_*her 3 activerecord ruby-on-rails
我有一个包含商店列表的ActiveRecord数组.
shops = Shop.find(:all)
Run Code Online (Sandbox Code Playgroud)
我想删除商店中的记录而不从数据库中删除它.
shops.delete(a_shop)
会导致删除SQL查询.我只想从ActiveRecord数组中删除商店,而不是数据库.
可以这样做吗?
谢谢
请注意,如果您使用has_many关系,则JP的答案将无效.
扩展示例:
class City < ActiveRecord::Base
has_many :shops
end
city = City.find(:name => "Portland")
Run Code Online (Sandbox Code Playgroud)
然后
city.shops.delete(city.shops[0])
Run Code Online (Sandbox Code Playgroud)
将删除数据库!
也
theshops = city.shops
theshops.delete(ss[0])
Run Code Online (Sandbox Code Playgroud)
会从数据库中删除
从数据库中分离的一种方法是使用紧凑或其他数组函数,如下所示:
theshops = city.shops.compact
theshops.delete(ss[0])
Run Code Online (Sandbox Code Playgroud)
不会从DB中删除
此外,在所有情况下,delete_if都不会从db中删除:
city.shops.delete_if {|s| s.id == city.shops[0]}
Run Code Online (Sandbox Code Playgroud)
干杯!
不要忘记:如果您对这些事情有疑问,脚本/控制台就是您的朋友!
当我做一些测试时,调用delete方法实际上并没有从数据库中删除该元素.仅来自阵列.
shops = Shop.find(:all)
shops.delete(shops[0]) #deletes the first item from the array, not from the DB
Run Code Online (Sandbox Code Playgroud)
要从DB中删除:
shops = Shop.find(:all)
Shop.delete(shops[0].id)
Run Code Online (Sandbox Code Playgroud)
看到区别?至少,这是如何在我的Rails 2.1设置上工作.
-J.P
归档时间: |
|
查看次数: |
3244 次 |
最近记录: |