2014-03-30 51 views
0

我有這三個表的數據模型Project,Team & User。當用戶創建一個新項目時應該可以選擇新項目應與哪個團隊關聯。我打算用單選按鈕來做到這一點。Rails 4 - 一對多,在form_for中選擇孩子的父實體

我有一個工作實現,但我懷疑這是否是正確的方式來做到這一點。主要從安全角度考慮。目前,它看起來像這樣(我用的HAML):

/ View 
= form_for @project do |f| 

    /Select team 
    .form-group 
     - current_user.teams.each do |team| 
     /I use team_id as the value for my radio button 
     = f.radio_button 'team_id', team.id 

[...] 


/Controller 
def new 
    @project = Project.new(team_id: params[:team_id]) 
end 

def create 
    @project = Project.new(project_params) 
    [...] 

# Never trust parameters from the scary internet, only allow the white list through. 
def project_params 
    params.require(:project).permit(:name, :idea_description, :team_id)  
end 

我不知道,如果它是安全的,允許通過team_id從視圖,纔有可能建立一個協會,任何一支球隊?

所以我的問題是,有沒有另一種方法呢?如果沒有,這個實現是否可以?或者我怎樣才能讓它更安全?

回答

1

當前情況下,用戶可以通過任何團隊設置單選按鈕的值,即使他不是它的標誌。 從我的理解。一個項目應該屬於一個團隊。 如果你已經擁有了它這樣只需更換第一行創建這樣的:

@team = current_user.teams.find project_params[:team_id] 
    @project = @team.projects.build project_params 

這將確保球隊ID存在並與用戶

+0

謝謝,這工作。 – Anders