1

我的联想有困难,一直在四处寻找与我的问题相关的答案。我的表单中有一个选择框,可以在创建研究时将用户添加到研究中。问题是,如果我编辑列表并从研究中删除用户,然后将其添加回来,则会删除他们的答案。我仍在学习 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 

我的用户.rb

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

我的答案.rb

belongs_to :user
belongs_to :study
belongs_to :question

我意识到这可能是我忽略的一些简单的事情,当花太长时间看某样东西时通常会出现这种情况,但任何朝着正确方向的点都会非常感激。

4

2 回答 2

2

您可能会从使用像act_as_paranoid这样的软删除 gem中受益。

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

于 2012-08-08T14:46:46.097 回答
1

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

这大致就是像 Deefour 已经推荐的那些宝石会做的事情。

于 2012-08-08T14:49:30.790 回答