表单对象:将Use Gem与User / Pet示例一起使用

时间:2014-12-26 21:13:39

标签: ruby-on-rails ruby forms reform

Nick Sutterer的Reform gem看起来很棒但是出于某种原因我无法理解如何将它应用到我的概念验证Rails应用程序中。我已经阅读了文档和一些博客文章,但仍然没有完全理解它是如何工作的。

鉴于以下标准,模型,表单对象类,视图和控制器的代码是什么样的?

  • 该应用包含UserPet型号
  • 注册表单接受User.email和他的Pet.name
  • 如果没有有效的电子邮件地址,用户就无法注册
  • 当用户注册时,会创建User的帐户并创建pet行并自动与用户关联

样本模型:

用户

# app/models/user.rb
class User < ActiveRecord::Base
  has_many :pets
end

他的宠物

# app/models/pet.rb
class Pet < ActiveRecord::Base
  belongs_to :user
end

谢谢!

1 个答案:

答案 0 :(得分:2)

class UserForm < Reform::Form
  property :email

  property :pet, populate_if_empty: Pet do
    property :name
  end
end

然后按如下方式实例化表单。

UserForm.new(User.new)

验证工作反之亦然。

UserForm.new(User.new).validate(params[:user])

我建议你买这本书。这不是隐蔽的广告,但我基本上是在这里重复哈哈哈。