2013-10-22 14 views
8

Tôi đang sử dụng Active Admin trong Rails 4. Trong mô hình của tôi tôi có một lĩnh vực mà là một loại mảng Postgres khi tôi đang tạo đối tượng nó đang đi trong nền nhưng nó không được lưu vào cơ sở dữ liệu. Vì vậy, những gì tôi cần làm để lưu mảng mảng trong cơ sở dữ liệu thông qua Active Admin.Làm thế nào để lưu mảng trong Rails Admin 4?

Cảm ơn

+0

kiểu mảng? bạn đang sử dụng máy chủ cơ sở dữ liệu nào? – phoet

+0

có, máy chủ Postgres 9.1 –

+0

Xin lỗi, Đã đọc câu hỏi của tôi đúng cách ??? Tôi đang cố gắng lưu nó thông qua admin đang hoạt động. –

Trả lời

9

Bạn có công cụ Hack kể từ quản trị hoạt động không hỗ trợ nó ra khỏi hộp, có vẻ như.

Mặc dù câu trả lời này là cũ, nó hoạt động: How do you handle serialized edit fields in an Active Admin resource?

Dưới đây là một bản tóm tắt về cách tôi xử lý tình trạng này. Tôi đã thêm một accessor vào mô hình mà có thể biến Array thành một chuỗi tham gia bởi một linefeed và chia nó trở lại một Array.

# app/models/domain.rb 
class Domain < ActiveRecord::Base 
    serialize  :names, Array 
    attr_accessor :names_raw 

    def names_raw 
    self.names.join("\n") unless self.names.nil? 
    end 

    def names_raw=(values) 
    self.names = [] 
    self.names=values.split("\n") 
    end 
end 

sau đó, trong nguồn lực quản trị của tôi cho tên miền, thay vì sử dụng: lĩnh vực tên, tôi đã sử dụng: Trường names_raw. đặt giá trị này sẽ lưu tên Array với các giá trị mới.

# app/admin/domains.rb 
form do |f| 
    f.inputs "Domain" do 
    f.input :names_raw, :as => :text 
    end 
    f.buttons 
end 
1

Dưới đây là một mất tương tự nhưng thậm chí đơn giản hơn về một giải pháp nếu bạn không cần một giao diện người dùng ưa thích cho các admin.

# app/model/thing.rb 
def some_array_column= items 
    if items.is_a? String 
    super items.split(" ") 
    else 
    super items 
    end 
end 

# app/admin/thing.rb 
ActiveAdmin.register Thing do 
    index do 
    column "Things" { |t| (t.some_array_column || []).join(" ") } 
    end 
end 
Các vấn đề liên quan