- Created BatchGenerateWeatherArtsJob to process eligible cities and generate weather art. - Introduced GenerateWeatherArtJob for generating weather art and image attachment. - Added AiService for obtaining prompts and generating images with OpenAI API. - Implemented WeatherService to fetch current weather data from the QWeather API. - Updated Gemfile with necessary gems (whenever, ruby-openai, httparty, down, aws-sdk-s3). This commit introduces a system to create and store weather art images for various cities based on current weather conditions, leveraging external APIs for data and image generation.
84 lines
2.3 KiB
Ruby
84 lines
2.3 KiB
Ruby
ActiveAdmin.register WeatherArt do
|
|
controller do
|
|
def find_resource
|
|
scoped_collection.friendly.find(params[:id])
|
|
end
|
|
end
|
|
# See permitted parameters documentation:
|
|
# https://github.com/activeadmin/activeadmin/blob/master/docs/2-resource-customization.md#setting-up-strong-parameters
|
|
#
|
|
# Uncomment all parameters which should be permitted for assignment
|
|
#
|
|
# permit_params :city_id, :weather_date, :description, :temperature, :feeling_temp, :humidity, :wind_scale, :wind_speed, :precipitation, :pressure, :visibility, :cloud, :prompt
|
|
#
|
|
# or
|
|
#
|
|
# permit_params do
|
|
# permitted = [:city_id, :weather_date, :description, :temperature, :feeling_temp, :humidity, :wind_scale, :wind_speed, :precipitation, :pressure, :visibility, :cloud, :prompt]
|
|
# permitted << :other if params[:action] == 'create' && current_user.admin?
|
|
# permitted
|
|
# end
|
|
permit_params :city_id, :weather_date, :description, :temperature,
|
|
:feeling_temp, :humidity, :wind_scale, :wind_speed,
|
|
:precipitation, :pressure, :visibility, :cloud,
|
|
:prompt, :image, :slug
|
|
|
|
remove_filter :image_attachment, :image_blob
|
|
filter :city_id
|
|
filter :weather_data
|
|
|
|
index do
|
|
selectable_column
|
|
id_column
|
|
column :city
|
|
column :weather_date
|
|
column :description
|
|
column :temperature
|
|
column :image do |weather_art|
|
|
image_tag(weather_art.image, size: "100x100") if weather_art.image.attached?
|
|
end
|
|
actions
|
|
end
|
|
|
|
show do
|
|
attributes_table do
|
|
row :city
|
|
row :weather_date
|
|
row :description
|
|
row :temperature
|
|
row :feeling_temp
|
|
row :humidity
|
|
row :wind_scale
|
|
row :wind_speed
|
|
row :precipitation
|
|
row :pressure
|
|
row :visibility
|
|
row :cloud
|
|
row :prompt
|
|
row :image do |weather_art|
|
|
image_tag(weather_art.image) if weather_art.image.attached?
|
|
end
|
|
end
|
|
end
|
|
|
|
form do |f|
|
|
f.inputs do
|
|
f.input :city
|
|
f.input :weather_date
|
|
f.input :description
|
|
f.input :temperature
|
|
f.input :feeling_temp
|
|
f.input :humidity
|
|
f.input :wind_scale
|
|
f.input :wind_speed
|
|
f.input :precipitation
|
|
f.input :pressure
|
|
f.input :visibility
|
|
f.input :cloud
|
|
f.input :prompt
|
|
f.input :image, as: :file
|
|
end
|
|
f.actions
|
|
end
|
|
end
|