从ActiveResource :: Collection关系

时间:2016-02-04 17:39:55

标签: ruby-on-rails-4 soa activeresource

我在文件服务中有多对多关系(HABTM):

class Album < ActiveRecord::Base
  has_and_belongs_to_many :media, join_table: 'albums_media'
end

class Medium < ActiveRecord::Base
  has_and_belongs_to_many :albums, join_table: 'albums_media'
end

我们有一个包含ActiveResource接口类的gem到该服务中:

class Medium < ActiveResource::Base
  ...

  def albums
    Album.where(id: album_ids)
  end
end

通过传递album_ids

,我可以轻松创建属于给定相册的媒体
album = Album.create(...)
medium = Medium.create(album_ids: [album.id])

我希望能够从给定的medium删除某个album,但ActiveResource并不直接支持此功能。

# not supported...
medium.albums.destroy(...)

我宁愿不使用has_many :through,因为我不需要直接管理连接,除了做这种事情。

感谢任何见解。

1 个答案:

答案 0 :(得分:0)

仅供参考:我最终在文件服务中添加了额外的“join”资源,然后将相应的ActiveResource类添加到gem中。现在我们可以使用API​​直接管理连接。

这比我想做的更多,但是AR的重量相当轻,并且不支持多对多关系。关键是,它可以完成。