【发布时间】:2012-10-30 21:12:21
【问题描述】:
在我的 rails 应用程序中,我有一个用户名模型,它以多态方式附加到 2 个模型小丑和舞者。
创建 Joker 时,表单会发送一个字符串,该字符串是 Joker 的用户名。对于用户名,我应该如何进行设置,以便 rails 在接收字符串而不是 AR 对象时不会引发错误?
这是我现在的代码。
class Joker < ActiveRecord::Base
attr_accessible :username
has_one :username
end
并在创建 Jokers_controller
@joker = Joker.new(params[:joker])
Rails 抛出此错误:
Username(#19110) expected, got String(#9130)
这是表单域
= form_for @joker do |f|
- if @joker.errors.any?
#error_explanation
h2 = "#{pluralize(@joker.errors.count, "error")} prohibited this joker from being saved:"
ul
- @joker.errors.full_messages.each do |message|
li = message
= f.text_field :username
【问题讨论】:
-
请向我们展示此操作的表单。我怀疑您将用户名作为字符串而不是关联的 ID 传递。无论如何,为什么
Username是一个模型?为什么必须与jokers表分开? -
我进行了编辑以显示表单。我不确定如何传递关联 ID。用户名必须是模型,因为 Joker 和 Dancer 都需要用户名,并且这些用户名必须是唯一的。
标签: ruby-on-rails ruby-on-rails-3 activerecord ruby-on-rails-3.2