Ruby on rails Rails 4:使用“强制”强制特定值;“强参数”;

Ruby on rails Rails 4:使用“强制”强制特定值;“强参数”;,ruby-on-rails,ruby,ruby-on-rails-4,strong-parameters,Ruby On Rails,Ruby,Ruby On Rails 4,Strong Parameters,我正在努力创建一个“项目”表单。最终,我希望只允许当前用户id,但我还没有建立用户模型或身份验证,因此作为占位符,我只是硬编码1 app/views/projects/new.html.erb: <%= form_for(:project, :url => {:action=>'create'}) do |f| %> <%= f.text_field(:name) %> <%= f.text_field(:instructions) %> <

我正在努力创建一个“项目”表单。最终,我希望只允许当前用户id,但我还没有建立用户模型或身份验证,因此作为占位符,我只是硬编码
1

app/views/projects/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 %>
以下是我尝试提交表单时遇到的错误:

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()方法正在剥离用户id。我做错了什么?

可能是因为params[:user_id]是一个字符串,这样做应该有效

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

仅尝试使用
{:user\u id=>1}
(只是一个整数,而不是数组),或者最终去掉user\u id部分并在许可证之后添加:
。许可证(:说明,:等)。合并!({user\u id:1})
Yeh,或
f.hidden\u字段(:user\u id,1)
@Edmund一个hidden\u字段仍然很容易更改。最好在用户在服务器端输入后设置它。@Yoshiji先生我应该允许一个整数(不是数组),但它仍然抛出缺少的字段错误:
{:user\u id=>1}
{:user\u id=>'1'}
@Emerson可能是因为params[:user\u id]等于“1”,是字符串,应为整数。。请尝试
.permit(user_id:[“1”])
查看它是否可以在最新的Rails中工作(至少从版本4.1开始)-->
params.require(:project).permit({:user_id => ["1"]}, :instructions, :max_duration, :active, :max_videos, :hashed_id)