如何在不破坏记录的情况下删除用户关联?

时间:2012-08-08 14:35:01

标签: ruby-on-rails ruby

我的协会有困难,一直在努力寻找与我的问题相关的答案。我的表单中有一个选择框,可以在创建时将用户添加到研究中。问题是,如果我编辑列表并从研究中删除用户然后将其添加回去,则会删除他们的答案。我仍然在学习RoR,并且已经完成了使用现有代码以这种方式运行的任务。研究模型通过答案有很多用户,那么如何在不删除答案的情况下编辑研究用户?我的表格:

= select_tag("users[]", options_for_select(@users.collect { |ff| [ff.full_name, ff.id] }, @study.users.collect { |fs| fs.id }), | {:multiple=>true, :id => "users"})                                                                                      |

我的学习.rb:

has_many :users, :through => :answers
has_many :answers, :group => :grouping_number
accepts_nested_attributes_for :answers 

我的user.rb

has_many :answers
has_many :studies, :through => :answers

我的回答.rb

belongs_to :user
belongs_to :study
belongs_to :question

我意识到这可能是我忽略的一些简单的事情,通常情况下花费太长时间看某事情,但是正确方向的任何一点都会受到高度赞赏。

2 个答案:

答案 0 :(得分:2)

使用{strong> Soft Delete gemacts_as_paranoid可能会从中受益。

这样,关联将保持不变,但会被标记为已删除,而不是实际从数据库中删除。这样做的好处是,即使在他们的学习关联被“删除”之后,您仍然可以查询用户答案的​​活动记录,而实际上已从应用程序中删除的关联行为将保持不变。

答案 1 :(得分:1)

是否有意义,用户只有在给出答案时才能属于某项研究?我会以某种方式假设一个独立的关系UserStudies。在您的情况下,作为一个单独的模型,而不仅仅是has_and_belongs_to_many关系。这将允许您在此模型中具有“活动”标志,这样可以激活或停用该关系。然后,您只需向belongs_to关联添加一个条件。

这就像Deefour已经推荐过的宝石一样。