0

ここに私が持っているものがあります:

def existing_photos
  @existing_photos = Array.new
  event.photos.each do |ep|
    @existing_photos << URI.unescape(ep.dropbox_path.split('/').last) rescue []
  end
  @existing_photos
end

データベース クエリからファイル名の配列を返します。これを行うには、もっとルビーのような方法があると確信しています。

また、dropbox-api のls結果で同じことを行う同様の方法もあります。

def all_photos
  @all_photos = Array.new
  @dropbox_files.each do |dbf|
    @all_photos << dbf.path.split('/').last
  end
  @all_photos
end

それも最適化する必要があると思います。前もって感謝します!

4

1 に答える 1

3

私はおそらくこれを行うだろう...

def existing_photos
  event.photos.map { |ep|
    URI.unescape(ep.dropbox_path.sub(%r{.*/}, '') rescue nil
  }.compact
end

配列のようなものを取得event.photosし、ブロックを使用してマップして、必要なものに変換します。最後に圧縮して、nil ケースを処理します。の使用subは単なる好みであり、パスを分割して最後の要素を選択するよりも高速な場合があります (ただし、時間を計って表示することをお勧めします)。

于 2012-11-27T23:00:44.277 に答える