Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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
从ActiveRecord哈希中删除元素而不删除数据库_Activerecord_Hash - Fatal编程技术网

从ActiveRecord哈希中删除元素而不删除数据库

从ActiveRecord哈希中删除元素而不删除数据库,activerecord,hash,Activerecord,Hash,我该怎么做 all_tickets = Ticket.find(:all) all_tickets.each do |at| if at "a condition" all_tickets.delete(at) end end 使用这段代码,我从数据库中删除了at元素,但我只想在“a条件”为true时从all_tickets ActiveRecord散列中删除at元素 感谢您的帮助根据您的提示,此解决方案已转换为不使用sql。简而言之,抓取票据,循环它们,如果条件为真

我该怎么做

all_tickets = Ticket.find(:all)

all_tickets.each do |at|
   if at "a condition"
      all_tickets.delete(at)
   end
end
使用这段代码,我从数据库中删除了at元素,但我只想在“a条件”为true时从all_tickets ActiveRecord散列中删除at元素


感谢您的帮助

根据您的提示,此解决方案已转换为不使用sql。简而言之,抓取票据,循环它们,如果条件为真,则从属性中删除特定的密钥。最后,使用这些属性生成一个新的票证实例(不是记录)

我理解这个条件是一个外部的东西,但是我建议在接受这个条件的对象上添加一个attr_访问器。我会在视图中利用这一点,以便不依赖给定字段的存在或不存在来确定它是如何交付的。我在这里做了一些假设,但是解决方案让我对需要这种操作的特性感到好奇。祝你好运

all_tickets = Ticket.find(:all)
processed_tickets = []
all_tickets.each do |ticket|
  attributes = ticket.attributes
  attributes.delete(:some_key) if some_condition?
  processed_tickets << Ticket.new(attributes)
end
all_tickets=Ticket.find(:all)
已处理的_票证=[]
所有的票。每一张票|
attributes=ticket.attributes
属性。如果某个条件存在,是否删除(:某个\u键)?

processed_tickets提示:“条件”不能通过sql发送/请求,它是一个外部条件。所以一个all_tickets.find(:all,:conditions=>“a condition”)将不起作用。谢谢。请阅读我的提示,条件不能通过sql查询-(所有_票证的计数每次都小于10,因此迭代应该不是问题。谢谢!