改造gem以创建嵌套在Checklist资源中的Devise用户 - 这可能吗?

时间:2014-12-11 17:53:02

标签: ruby-on-rails devise simple-form nested-attributes reform

我正在尝试使用Devise为用户模型,Reform gem和simple_form创建一个事件计划清单应用程序。

当我访问'/ new_checklist'路径时,我一直看到此错误消息:未定义的方法`event_date'用于#<哈希:0x007fb18f5b71a8>

我做错了什么?由于各种原因,我的用户资源嵌套在我的核对表资源中。

这是我的活动清单控制器:

def new_checklist
  @form = EventChecklistForm.new(event_checklist: EventChecklist.new,
                            user: User.new)
end

用户模型:

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
  require 'securerandom'
  has_many :checklist_items
  belongs_to :event_checklist
end

核对表模型:

class EventChecklist < ActiveRecord::Base
  has_many :checklist_items
  has_many :users
  accepts_nested_attributes_for :checklist_items
end

活动清单表单模型:

class EventChecklistForm < Reform::Form
  # include DSL
  include Reform::Form::ActiveRecord

  property :event_date, on: :event_checklist
  property :code, on: :event_checklist

  property :email, on: :user
  property :password, on: :user
  property :password_confirmation, on: :user
end

我也尝试在事件清单模型的末尾添加“model:event_checklist”,但它没有什么区别。

最后,形式:

= simple_form_for @form do |f|

  = f.input :event_date
  = f.input :code
  = f.input :email
  = f.input :password
  = f.input :password_confirmation

我曾希望将Devise用户模型嵌套在事件清单模型中,并使用Reform gem同时创建两者。这可不可以吗?谢谢!

1 个答案:

答案 0 :(得分:0)

有同样的问题。按照https://github.com/apotonick/reform#compositions上的方法进行操作。

基本上你必须:

class EventChecklistForm < Reform::Form
  include Composition
  ...
end