通过ID数组中的关联创建多个has_many

时间:2014-01-16 09:35:21

标签: ruby-on-rails ruby activerecord associations has-many-through

我有模型UserPhotoFavorite,其中favorites是从usersphotos的联接表,即:< / p>

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

假设@userUser的实例,而photo_ids是照片的主键数组。将所有这些照片添加到@user.photos的最快和/或最简洁的方式是什么?

我能做的最好的事情是:

@user.favorites.create( photo_ids.map { |id| {photo_id: id } } )

但这对我来说似乎很啰嗦。 Rails没有更好的处理方法吗?

其他问题讨论通过嵌套表单创建多个has_many: through:关联,但我试图在JSON API中执行此操作,因此不涉及任何表单。

1 个答案:

答案 0 :(得分:6)

怎么样

@user.photos << Photo.find_all_by_id(photo_ids)