Мне любопытно получить информацию о фрагменте кода, над которым я недавно работал.
У меня есть модель, photos
, которая иногда (но не всегда) принадлежит к collection
. У меня есть страница, на которой пользователи могут управлять коллекцией, они могут добавлять любые неназначенные фотографии в коллекцию или удалять фотографии из коллекции.
Это ситуация «редактирования нескольких», поэтому я создал два новых действия контроллера: select
, который обрабатывает запрос GET и представление, и assign
, который обрабатывает запрос PUT из флажков в представлении выбора.
Поскольку пользователь может добавлять фотографии в коллекцию или удалять фотографии из коллекции, мое действие assign
содержит условие, и оно выглядит следующим образом:
def assign
@photos = Photo.find(params[:photo_ids])
case params[:assignment]
when 'add'
@photos.each do |p|
p.collection = @collection
p.save!
end
notice = "Photos added to collection."
when 'remove'
@photos.each do |p|
p.collection = nil
p.save!
end
notice = "Photos removed from collection."
end
redirect_to select_collection_photos_path(@collection), :notice => notice
end
Это работает точно так, как ожидалось. Тем не менее, я чувствую себя неловко с этим, это не похоже на «путь рельсов».
Другие разработчики Rails, когда у вас возникнет такая ситуация, вы бы справились с этим, как я? Вы бы поделили это на два действия контроллера (то есть add_to_collection
и remove_from_collection
) или перенесли бы это в модель? Если бы вы переместили его в модель, как бы это выглядело?
Буду признателен за любые предложения и отзывы. Спасибо!