postgresql - 如何使用多个键和值 rails 5 将数据存储在 hstore 数据类型中

标签 postgresql ruby-on-rails-5 hstore

views/_form.html.erb

Extra fee field name : <%= text_field_tag :extra_fee_field,nil, placeholder: 'Enter field name',name: "payment_plan[payment_fees[extra_fee_field]][]" %>fees 
Extra fee value : <%= text_field_tag :extra_fee_value,nil, placeholder: 'Enter fee value in %',name: "payment_plan[payment_fees[extra_fee_value]][]" %> %
<%= submit_tag "Add",id: "add" %>

controllers/payment_plan_controller.rb

def create
@payment_plan = PaymentPlan.new(payment_plan_params)
@payment_plan.save

结束

private
def payment_plan_params
    params.require(:payment_plan).permit(:pay_within_days,:display_active,
    :payment_fees=>[:extra_fee_field=>[],:extra_fee_value=>[]])
end

模型/payment_plan.rb

class PaymentPlan < ApplicationRecord
store_accessor :payment_fees
end

以下格式的数据存储:-

payment_fees: {"extra_fee_field"=>"[\"serfere\",\"sfsdfdff\"]", "extra_fee_value"=>"[\"5\",\"7\"]"}, display_active : false, created_at: "2016-07-12 06:41:48", updated_at: "2016-07-12 06:41:48">

请帮帮我。 提前致谢..:)

最佳答案

在尽了最大努力之后,我得到了解决方案,上面所有的代码都是正确的,只是改变了 Controller 的方法

@extra_fee_field = params[:payment_plan][:payment_fees][:extra_fee_field]
@extra_fee_value = params[:payment_plan][:payment_fees][:extra_fee_value]
@payment_plan[:payment_fees] = @extra_fee_field.zip(@extra_fee_value).to_h

在此之后我可以将数据存储在 hstore 数据类型中

关于postgresql - 如何使用多个键和值 rails 5 将数据存储在 hstore 数据类型中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38322810/

相关文章:

python - 如何在 Pony ORM 中创建/连接 postgres 数据库?

ruby-on-rails - Rails 5错误: No route matches [DELETE] "/comments"

ruby - 无法检索包含临时文件的散列的第一个元素

ruby-on-rails - 迁移无法识别在 schema_search_path 上创建的 hstore 扩展

database - Go 语言中带时区的时间戳

mysql - SQL:删除除每个用户的最后 X 条消息之外的旧消息

sql - 带有总和和条件的 PostgreSQL 查询

ruby-on-rails - HashWithIndifferentAccess 不适用于 Rails 5 中的 % 格式运算符

postgresql - 将平面 jsonb 迁移到 hstore

ruby-on-rails - 如何使用 Hstore 键在 ActiveRecord 查询上使用 group by 子句?