Я изучаю Rails, написав простое приложение для задач TODO.Две модели:
class List < ActiveRecord::Base
has_many :tasks, :dependent => :destroy
# ...
end
class Task < ActiveRecord::Base
belongs_to :list
# ...
end
Задачи маршрутизируются как вложенные ресурсы в списках.Таким образом, когда пользователь создает новую задачу, сообщение POST
отправляется на /lists/:list_id/tasks
.Пока что в форме Tasks#new
есть
f.hidden_field :list_id, :value => params[:list_id]
, но это ужасное решение, потому что любой может изменить значение этого скрытого поля.
Какое здесь соглашение? Должен ли я поместить что-то вроде
@task.list_id = params[:list_id]
в действие Tasks#create
и избавиться от скрытого поля, или, может быть,
@task = List.find(params[:list_id]).tasks.new(params[:task])
if @task.save
# ...
end
или есть даже лучший способ, которым я надеваюне знаете?
Редактировать:
Да, ну, был подобный вопрос , и его ответ в значительной степени покрывает мой вопрос.Если у вас есть другой, пожалуйста, опубликуйте его.