0

したがって、Rails 4 で PostgreSQL を使用して次のように設定しています。

# migration
create_table :custom_category_groups do |t|
  t.string :name
  t.string :content_types, array: true, default: []
end

# controller
class CustomCategoryController < ApplicationController
  # ...
  def update
    @custom_category_group = CustomCategoryGroup.new(custom_category_group_params)
    if @custom_category_group.update(custom_category_group_params)
      # ...
    end
  end

private
  def custom_category_group_params
    params.require(:custom_category_group).permit(:name, content_types: [])
  end
end

# view
= form_for @custom_category_group do |f|
  = f.collection_check_boxes :content_types, %w(interviews testimonials blogs).map { |ct| [ ct.titleize, ct ] }, :last, :first

カスタム カテゴリ グループを保存すると、次のエラーが表示されます。

TypeError - can't cast Array

ログを見ると、次の DB ステートメントが発行されていることがわかります。

UPDATE "custom_category_groups" SET "content_types" = $1, "updated_at" = $2
 WHERE "custom_category_groups"."id" = 2  [[nil, ["interviews", ""]],
 ["updated_at", Mon, 26 Aug 2013 12:15:53 UTC +00:00]]

ご覧のとおり、Rails はどうにかして content_types (節nilの後の中括弧内) の適切な名前を解決できません。WHERE

本当に奇妙なこと: 単純にページをリロードしてフォームを再度送信すると (ブラウザーが尋ねたときに)、節約が機能します!????

4

0 に答える 0