在我的Rails應用程序中,我有users
誰可以有許多projects
而這又可以有許多tasks
。如何限制Rails關聯中的外鍵?
型號:
class Task < ActiveRecord::Base
attr_accessible :project_id
end
控制器:
class TasksController < ApplicationController
def create
@task = current_user.tasks.build(params[:task])
if @task.save
flash[:success] = "Task saved."
redirect_to edit_task_path(@task)
else
render :new
end
end
def update
if @task.update_attributes(params[:task])
flash[:success] = "Task updated."
redirect_to edit_task_path(@task)
else
render :edit
end
end
end
什麼是對Rails標準的做法,以確保用戶一個不能爲用戶b創建任務?
現在,我通過表單中的選擇框選項來限制用戶可以使用的project_ids
。但是,這可以通過瀏覽器控制檯輕鬆入侵,並且不安全。
這怎麼能改進?
感謝您的任何幫助。
你好奧利弗,這很好,只是測試它。非常感謝你。 – Tintin81
不幸的是,我不能在我的應用程序中使用嵌套的資源。所以我將不得不堅持你提供的第一個解決方案。因爲我是Rails的新手:你能告訴我如何調整我的'update'動作嗎?我不知道如何在那裏獲得'@ project'變量。我認爲從安全的角度來看,在'create'和'update'操作上運行過濾器就足夠了嗎? – Tintin81