当前位置 : 主页 > 编程语言 > ruby >

ruby-on-rails – 存储动态表单中的数据

来源:互联网 收集:自由互联 发布时间:2021-06-23
我正在研究动态表单生成器.有人可以创建如下字段:字符串,文本,布尔值,数字,文件等. 是否存在用于存储来自此类动态表单的数据的宝石或指南? 我的意思是我可以为每种数据类型创
我正在研究动态表单生成器.有人可以创建如下字段:字符串,文本,布尔值,数字,文件等.

是否存在用于存储来自此类动态表单的数据的宝石或指南?

我的意思是我可以为每种数据类型创建多个表,或者我可以将它们全部存储为TEXT,其中包含应转换的标志类型.

UPD

或者我最好在这里使用nosql?

我相信 Mongodb是这个应用程序的正确选择,因为它不强制执行任何模式,它是任意数据的一个很好的选择.

同样,它确实支持您所期望的所有数据类型.这很容易.

有一个看起来像这样的表单集合(Ruby Mongoid代码)

class XForm
  include Mongoid::Document
  include Mongoid::Timestamps
  include Mongoid::Paranoia

       field :name, :type => String
       field :user, :type => BSON::ObjectId     

       embeds_many :formfields
  end

class Formfields
  include Mongoid::Document

     field :name, :type => String
     field :kind, :type => String
     #field :value, :type => String -> dont add it in formfields, make it dynamic sine the type varies

  embedded_in :xform
  end

要将值字段添加为动态字段,您需要在mongoid.yml中启用allow_dynamic_fields:true

并创建一个这样的新领域

form = XForm.new(:name=>'test form',:user => current_user.id)
   #for integer field
   form.formfields << Formfields.new(:name => "Age",:kind=>"Integer", :value => 21)
   #for bool field
   form.formfields << Formfields.new(:name => "isMarried",:kind=>"Boolean",:value => true)
   #for string field
   form.formfields << Formfields.new(:name => "name",:kind=>"String",:value => "ram")

希望这可以帮助

网友评论