是否可以通过使用表单的关联附加/取消附加has_one?

时间:2014-07-09 18:01:30

标签: ruby-on-rails forms ruby-on-rails-4 associations has-one

我的模特看起来像这样:

class Photo


   has_one :photo_gallery
   has_one :gallery, through: :photo_gallery

end

class PhotoGallery

   belongs_to :photo
   belongs_to :gallery

end

class Gallery

   has_many :photo_galleries
   has_many :photos, through: :photo_galleries

end

出于这个问题的目的,Gallery提供了一个Gallery.only_gallery

我希望Photo的表单包含一个复选框。

如果在提交表单时选中了复选框,则照片将通过Gallery.only_gallery模型与PhotoGallery相关联。如果未选中,则会破坏此关联。

这可能吗?

我理解如何建立强大的参数来接受任何必要的东西。我不明白的是如何创建一个可以做到这一点的表单。

1 个答案:

答案 0 :(得分:0)

你真的不应该通过一种形式来修改关联:它们要么存在,要么不存在。

在您的情况下,如果您不检查复选框,则不会在两个模型的连接表中创建任何行,因此您不会遇到问题。

我会在你的照片中推荐这样的东西:

<%= f.label :gallery_ids %> <br>
<%= collection_select(:photo, :gallery_ids, Gallery.all, :id, :name) %>

并添加

dependent: :nullify

到您的模型关联