从ActiveRecord-hash中删除元素而不在DB上删除

时间:2013-03-07 21:18:18

标签: activerecord hash

我该怎么做?

all_tickets = Ticket.find(:all)

all_tickets.each do |at|
   if at "a condition"
      all_tickets.delete(at)
   end
end

使用此代码我从数据库中删除at-element,但我只想在“a condition”为真时从all_tickets ActiveRecord-Hash中删除at元素。

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

根据您的提示,此解决方案已转换为NOT use sql。简而言之,抓住票证,循环遍历它们,如果条件为真,则从属性中删除特定键。最后,生成具有这些属性的新故障单实例(而不是记录)。

我理解条件是一个外部的东西,但我建议另外将attr_accessor添加到将承担条件的对象上。我会在视图中利用它,以便不依赖于给定字段的存在或不存在来确定它是如何传递的。我在这里做了一些假设,但解决方案让我对需要这种操作的功能感到好奇。祝你好运。

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