2012-08-08 35 views
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"})                      | 

我study.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 

我answer.rb

belongs_to :user 
belongs_to :study 
belongs_to :question 

我意識到,這可能是我忽視了一些簡單的東西,通常是cas當花費太長時間看東西時,但正確方向的任何一點都會受到高度讚賞。

回答

2

您可能會喜歡於Soft Delete gem,比如acts_as_paranoid

這種方式的關聯將保持不變,但被標記爲已刪除,而不是實際從數據庫中刪除。這樣做的好處是,即使學習關聯被「刪除」,您仍然可以查詢用戶答案的​​活動記錄,而實際上已從應用程序中刪除的關聯行爲將保持不變。

+0

這還行嗎?它看起來在過去的2到3年內一直處於非活動狀態。 – 2012-08-08 14:49:16

+0

我不使用它。我鏈接到它,因爲它仍然是紅寶石工具箱中最流行的。我的回答主要是指出OP所忽視的'東西',因爲軟刪除行爲可能正是他所追求的東西:) – deefour 2012-08-08 14:54:39

+0

夠公平! :) 爲了記錄,OP:https://www.ruby-toolbox.com/categories/Active_Record_Soft_Delete – 2012-08-08 14:56:48

1

只有當他給出答案時,用戶才能屬於一項研究纔有意義嗎?我會以某種方式假設一個獨立的關係UserStudies。在你的情況下,作爲一個單獨的模型,而不僅僅是一個has_and_belongs_to_many關係。這將允許你在這個模型中有一個「激活」的標誌,並且以這種方式激活或關閉這個關係。然後你只需在你的belongs_to關聯中添加一個條件。

這大致就像Deefour已經推薦的那些寶石一樣。

相關問題