Я реализовал функцию, которая позволяет пользователям устанавливать фотографии профиля по умолчанию и фотографии обложки фотоальбома.
В моей базе данных есть следующие таблицы:
- Пользователь (и) -имеет один профиль, имеет много Фотоальбомов
- Профили - принадлежит пользователю
- Фотоальбом (ы) - принадлежит пользователю, имеет много фотографий
- Фото (и) -принадлежит PhotoAlbum
Действие для установки фотографии профиля по умолчанию:
def set_default_profile_photo
photo = Profile.find_by_user_id(current_user.id)
photo.photo_id = params[:photo_id]
photo.save
redirect_to :back
flash[:success] = "Default photo set!"
end
Это прекрасно работает.
Установка моей фотографии альбома по умолчанию была немного сложнее:
def set_default_album_photo
photo = PhotoAlbum.where(:id => Photo.where(:id => params[:photo_id]).first.photo_album_id)
photo.first.photo_id = params[:photo_id]
photo.first.save
redirect_to :back
flash[:success] = "Default album photo set!"
end
Это действие не сработало:
def set_default_album_photo
photo = PhotoAlbum.where(:id => Photo.where(:id => params[:photo_id]).first.photo_album_id)
photo.photo_id = params[:photo_id]
photo.save
redirect_to :back
flash[:success] = "Default album photo set!"
end
Я заработал, и неопределенная ошибка photo_id method
исчезла, но это произошло после изменения этихстроки от:
photo.photo_id = params[:photo_id]
photo.save
до:
photo.first.photo_id = params[:photo_id]
photo.first.save
Я не уверен, что происходит, и почему это изменение заставило вещи работать, и хочу понять, что происходит.