Rails 4: принудительное использование определенных значений с "сильными параметрами" - программирование
Подтвердить что ты не робот

Rails 4: принудительное использование определенных значений с "сильными параметрами"

Я борюсь с формой для создания "проектов". В конце концов, я хочу разрешить только текущий user_id, но я еще не построил модель пользователя или аутентификацию, так как ящик, я просто жестко-кодирующий 1.

приложение/просмотров/проекты/new.html.erb:

<%= form_for(:project, :url => {:action=>'create'}) do |f| %>
<%= f.text_field(:name) %>
<%= f.text_field(:instructions) %>
<%= f.hidden_field( :user_id, {:value=>1}) %>
<%= f.submit('Create Project') %>
<% end %>

приложение/контроллеры/projects_controller.rb

  def create
    #save object
    if Project.create( project_params )
        redirect_to(:action=>'show')
    else
        render('new')
    end
  end

  private
    def project_params
      params.require(:project).permit({:user_id => [1]}, :instructions, :max_duration, :active, :max_videos, :hashed_id)
    end

Вот ошибка, которую я получаю, когда пытаюсь отправить форму:

Mysql2::Error: Field 'user_id' doesn't have a default value: INSERT INTO `projects` (`created_at`, `instructions`, `updated_at`) VALUES ('2013-08-16 17:38:56', 'sdfgsdf', '2013-08-16 17:38:56')

Похоже, что метод project_params() удаляет user_id. Что я делаю неправильно?

4b9b3361

Ответ 1

Вероятно, это потому, что params [: user_id] - это строка, что-то вроде этого должно работать.

params.require(:project).permit({:user_id => ["1"]}, :instructions, :max_duration, :active, :max_videos, :hashed_id)