RubyOnRails |的ActiveRecord :: AssociationTypeMismatch

时间:2013-01-10 10:46:35

标签: ruby-on-rails

我有一个阶段模型,属于用户模型。用户模型has_many阶段。

当我尝试创建一个New Stage时,其hidden_​​field包含id current_user, 我有以下错误:

ActiveRecord::AssociationTypeMismatch in StagesController#create
User(#63609336) expected, got String(#16545012)

这是数组:

 {"utf8"=>"✓",
 "authenticity_token"=>"YD3VVr9Hntg/LEGjFAzu2roR5NGe6FPclew+zJOvGpY=",
 "stage"=>{"user"=>"8",
 "intitule"=>"er",
 "entreprise"=>"er",
 "secteur"=>"er",
 "mission"=>"er",
 "duree"=>"erea",
 "annee_debut"=>"az",
 "annee_fin"=>"z",
 "comment"=>"az",
 "site_entreprise"=>"az"},
 "commit"=>"Create Stage"}

user_id是一个Integer字段。

观点:

<%= f.hidden_field :user, :value => current_user.id %>

问题出在哪里?我找不到任何解决方案! 谢谢你的帮助。

2 个答案:

答案 0 :(得分:2)

替换为

<%= f.hidden_field :user_id, :value => current_user.id %>

答案 1 :(得分:1)

我不建议为此使用隐藏字段,因为用户可以修改隐藏字段。我建议在控制器中执行类似current_user.stages.create的操作,这将预先填充创建的Stage中的user_id。