2017-01-15 25 views
7

PostgreSQL'in dizi sütununda Rails' enum kullanmaya çalışıyorum.PG dizilimi ile Rails 5 enum kullanımı

class Post < ActiveRecord::Base 
    enum tags: { a: 0, b: 1, c: 2 }, array: true 
end 

Yukarıdaki kod

array: true destek arrtibute gibi bir dizi kolon üzerinde enum kullanarak herhangi bir şekilde var çalışmıyor Ancak?

DÜZENLEME

Aşağıdaki test durumu geçtiği görmek istiyorum, ama aslında o başarısız olur.

# frozen_string_literal: true 

begin 
    require "bundler/inline" 
rescue LoadError => e 
    $stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" 
    raise e 
end 

gemfile(true) do 
    source "https://rubygems.org" 

    git_source(:github) { |repo| "https://github.com/#{repo}.git" } 

    # Activate the gem you are reporting the issue against. 
    gem "activerecord", "5.1.4" 
    gem "pg" 
end 

require "active_record" 
require "minitest/autorun" 
require "logger" 

# Ensure backward compatibility with Minitest 4 
Minitest::Test = MiniTest::Unit::TestCase unless defined?(Minitest::Test) 

# This connection will do for database-independent bug reports. 
ActiveRecord::Base.establish_connection(adapter: "postgresql", database: "test") 
ActiveRecord::Base.logger = Logger.new(STDOUT) 

ActiveRecord::Schema.define do 
    create_table :products, force: true do |t| 
    t.integer :type_delivery, default: [], array: true, limit: 8 
    end 
end 

class Product < ActiveRecord::Base 
    enum type_delivery: { a: 1, b: 2, c: 3, d: 5 }, array: true 
end 

class BugTest < Minitest::Test 
    def test_array_enum 
    product = Product.create!(type_delivery: %w[a b c]) 
    assert_equal products.type_delivery, %w[a b c] 
    end 
end 

hatadır:

/usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/enum.rb:172:in `block (2 levels) in enum': undefined method `each_with_index' for true:TrueClass (NoMethodError) 
    from /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/enum.rb:171:in `module_eval' 
    from /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/enum.rb:171:in `block in enum' 
    from /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/enum.rb:154:in `each' 
    from /usr/local/var/rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/activerecord-5.1.4/lib/active_record/enum.rb:154:in `enum' 
    from guides/bug_report_templates/active_record_gem.rb:38:in `<class:Product>' 
    from guides/bug_report_templates/active_record_gem.rb:37:in `<main>' 
+0

Eğer buna bir çözüm buldular mı? – user3033467

cevap

-1

Raylar 5 ++

rails generate migration AddTypeDeliveryToProducts type_delivery:integer 

class AddTypeDeliveryToProducts < ActiveRecord::Migration[5.1] 
    def change 
    add_column :products, :type_delivery, :integer, array:true, default: [], limit: 8 
    end 
end 

class Product < ApplicationRecord 
    enum type_delivery: { a: 1, b: 2, c: 3, d: 4 } 
end 
+1

Kodunuz çalışmıyor. Lütfen sorudaki düzenlememe bakın. – yskkin