Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是否使用hstore在数据库条目中创建数量可变的字段?_Ruby On Rails_Postgresql - Fatal编程技术网

Ruby on rails 是否使用hstore在数据库条目中创建数量可变的字段?

Ruby on rails 是否使用hstore在数据库条目中创建数量可变的字段?,ruby-on-rails,postgresql,Ruby On Rails,Postgresql,我想知道我是否能得到你关于我正在开始构建的带有postgres后端的Rails应用程序的关联和可能的数据类型的建议。一个用户可以创建一个条目,它有许多:更正,这意味着多个用户可以更正该条目中的语言错误 对我来说,最具挑战性的部分是因为条目的内容被分解成单独的字符串,每个字符串都将被单独更正。例如,假设我创建了一个条目,标题(是一个字符串)“我的猫”,内容(是文本列)“我的猫的名字是Felix,他有一头黑发”,然后我希望能够分别为每个条目提交更正。在我的corrections_controller

我想知道我是否能得到你关于我正在开始构建的带有postgres后端的Rails应用程序的关联和可能的数据类型的建议。一个用户可以创建一个条目,它有许多:更正,这意味着多个用户可以更正该条目中的语言错误

对我来说,最具挑战性的部分是因为条目的内容被分解成单独的字符串,每个字符串都将被单独更正。例如,假设我创建了一个条目,标题(是一个字符串)“我的猫”,内容(是文本列)“我的猫的名字是Felix,他有一头黑发”,然后我希望能够分别为每个条目提交更正。在我的corrections_controller.rb的新动作中,我做到了这一点

    def new 

      @entry = Entry.find(params[:entry_id])
      @title = @entry.title
      @content = @entry.content.split('.')
      @correction = Correction.new

     end 
因此,在views/corrections/new.html.erb中,我这样做是为了为Entry.rb内容中的标题和每个字符串创建一个表单元素

<%= @title %>

<%= form_for [@entry, @correction], url: {action: "create"}, html: {class: "nifty_form"} do |f| %>

  <%= label_tag(:content, "Content") %>
  <%= f.text_area :content, size: "60x12" %>

  <%= f.submit "Create" %>
<% end %>

<hr>

<% @content.each do |c| %>

<%= c %>
<%= form_for [@entry, @correction], url: {action: "create"}, html: {class: "nifty_form"} do |f| %>

  <%= label_tag(:content, "Content") %>
  <%= f.text_area :content, size: "60x12" %>

  <%= f.submit "Create" %>
<% end %>


<% end %>
3) 如果您使用postgres hstore,您会将要更正的句子设置为
,将要更正的句子设置为

>> Correction.create( :data => { "My Cat's name is Felix" => "My cat's name is Felix", "He has black hair" => "He has black fur"})
最后的数据 修正载荷(1.0ms)选择“修正”。*从“修正”顺序中按“修正”。“id”描述限值1 =>{“他有黑色的头发”=>“他有黑色的毛皮”,“我的猫的名字叫费利克斯”=>“我的猫的名字叫费利克斯”}

根据我告诉你的,有没有更好的方法来使用Rails和postgres

请注意,在我用于灵感的应用程序中,尽管有多个表单字段对应于要更正的字符串,但一旦用户单击“提交”,它们都会立即提交。这也是我的目标

模型

Entry.rb  (has a :title and a :content column)

has_many :corrections

Correction   (has one column, :content, as well as :user_id and :entry_id)

belongs_to :entry

这听起来不像
hstore
在这里工作得特别好

既然要将内容拆分成句子,为什么不在数据库中反映出来呢?将内容存储在
语句中
表格:

(sentence_id int4, entry_id int4, order int2, content text)
这也意味着您不需要对标题进行特殊处理,它只是一个顺序=0的句子

然后,每个更正都可以引用特定的句子,您不受每个用户更正数量的限制:

(correction_id int4, sentence_id int4, user_id int4, corrected_content text)

看起来简单多了。

这听起来不像
hstore
在这里工作得特别好

既然要将内容拆分成句子,为什么不在数据库中反映出来呢?将内容存储在
语句中
表格:

(sentence_id int4, entry_id int4, order int2, content text)
这也意味着您不需要对标题进行特殊处理,它只是一个顺序=0的句子

然后,每个更正都可以引用特定的句子,您不受每个用户更正数量的限制:

(correction_id int4, sentence_id int4, user_id int4, corrected_content text)
看起来简单多了