0

これどうやってするの?

all_tickets = Ticket.find(:all)

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

このコードでは、データベースから at 要素を削除しますが、「条件」が true の場合に all_tickets ActiveRecord-Hash から at 要素を削除したいだけです。

手伝ってくれてありがとう

4

1 に答える 1

0

このソリューションは、ヒントに従って SQL を使用しないように変換されています。つまり、チケットを取得してループし、条件が true の場合は、属性から特定のキーを削除します。最後に、これらの属性を使用して新しいチケット インスタンス (レコードではない) を生成します。

条件が外部のものであることは理解していますが、代わりに、条件を取るオブジェクトに 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 に答える