0

我怎样才能做到这一点?

all_tickets = Ticket.find(:all)

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

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

感谢帮助

4

1 回答 1

0

根据您的提示,此解决方案已转换为不使用 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
于 2013-03-08T01:28:09.803 回答