У меня есть модели User
, Photo
и Favorite
, где favorites
является объединением таблицы с users
до photos
, а именно:Создание нескольких has_many через ассоциацию из массива идентификаторов
class User < ActiveRecord::Base
has_many :favorites
has_many :photos, through: `favorites`
end
class Photo < ActiveRecord::Base
has_many :favorites
has_many :users, through: `favorites`
end
class Favorite < ActiveRecord::Base
belongs_to :user
belongs_to :photo
end
сказать, что @user
является экземпляром User
и photo_ids
- это массив первичных ключей из фотографий. Какой самый быстрый и/или самый краткий способ добавить все эти фотографии в @user.photos
?
Лучшее, что я могу с это:
@user.favorites.create(photo_ids.map { |id| {photo_id: id } })
Но это, кажется, довольно многословен мне. У Rails нет лучшего способа справиться с этим?
Другие вопросы касаются создания нескольких ассоциаций has_many: through:
через вложенную форму, но я пытаюсь сделать это в API JSON, поэтому нет никаких форм.
Не понимаю, вы можете использовать '' << на ассоциации ActiveRecord. Благодаря! – GMA
Также обратите внимание, что объект справа представляет собой массив - он все еще работает. – BroiSatse
На самом деле я не думаю, что это сработает, не будет ли 'Photo.find_by_id' возвращать только один результат? 'Photo.where (id: photo_ids)' или 'Photo.find (photo_ids)' оба работают нормально. – GMA