いくつかのレコードを Dropbox にアップロードするために使用している次のヘルパー メソッドがあります。3 つのモデル (ログブック、航空機、アプローチ) のそれぞれについて、まったく同じことを行っています。これをもっと DRY にしてコードを 1 回だけにしたいのですが、抽象化された方法でモデルを参照する方法がわかりません。
推奨事項はありますか?
#------------------------------------------------------------
# Upload entries to Dropbox
#------------------------------------------------------------
def upload_items(items, folder, client)
# Go through each item and upload it to Dropbox
items.each do |item|
if folder == 'logbook'
# Get the file from the database to upload
@logbook = current_user.logbooks.find_by_sync_id(item)
# Upload it
uploaded_file = client.put_file("/logbook/#{item}.json",@logbook.to_json, overwrite = true)
# Reset the updated_flag in the database
@logbook.update_attributes(updated_flag: 0)
elsif folder == 'aircraft'
# Get the file from the database to upload
@aircraft = current_user.aircrafts.find_by_sync_id(item)
# Upload it
uploaded_file = client.put_file("/aircraft/#{item}.json",@aircraft.to_json, overwrite = true)
# Reset the updated_flag in the database
@aircraft.update_attributes(updated_flag: 0)
elsif folder == 'approaches'
# Get the file from the database to upload
@approach = current_user.approaches.find_by_sync_id(item)
# Upload it
uploaded_file = client.put_file("/approaches/#{item}.json",@approach.to_json, overwrite = true)
# Reset the updated_flag in the database
@approach.update_attributes(updated_flag: 0)
end
end
end
ルビー 1.9.3、レール 3.2.8