我该怎么做?从ActiveRecord-Hash中删除元素而不删除数据库
all_tickets = Ticket.find(:all)
all_tickets.each do |at|
if at "a condition"
all_tickets.delete(at)
end
end
有了这个代码,我删除数据库中的元素,但我只希望从all_tickets删除在元ActiveRecord的散列当“条件”为真。
感谢您的帮助
我该怎么做?从ActiveRecord-Hash中删除元素而不删除数据库
all_tickets = Ticket.find(:all)
all_tickets.each do |at|
if at "a condition"
all_tickets.delete(at)
end
end
有了这个代码,我删除数据库中的元素,但我只希望从all_tickets删除在元ActiveRecord的散列当“条件”为真。
感谢您的帮助
该解决方案已被转换为不使用你的每一丝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
请阅读我的提示,无法通过sql询问条件;-( all_tickets的计数是每次<10,所以迭代不应该是一个问题,谢谢! – Alex 2013-03-08 11:03:15
提示:“条件”不能通过sql发送/询问,这是一种外部条件。所以all_tickets.find(:all,:conditions =>“条件”)将不起作用。谢谢。 – Alex 2013-03-07 21:21:21