【问题标题】:RubyOnRails | ActiveRecord::AssociationTypeMismatchRubyOnRails | ActiveRecord::AssociationType 不匹配
【发布时间】:2012-12-24 17:32:45
【问题描述】:

我有一个 Stage Model,它属于 User Model。用户模型有_many 个阶段。

当我尝试创建一个新阶段时,其 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 是一个整数字段。

观点:

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

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

【问题讨论】:

    标签: ruby-on-rails


    【解决方案1】:

    替换为

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我不知道该怎么做。你能解释一下吗?看起来很有趣
      • @user1704926 你能在你创建阶段的地方显示你的控制器代码吗?
      • @user1704926 看看guides.rubyonrails.org/…
      猜你喜欢
      • 1970-01-01
      • 2012-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-09-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2020-12-12
      相关资源
      最近更新 更多