我在Rails 4中使用Active Admin。在我的模型中,我有一個字段,它是Postgres數組類型,當我創建它在後臺傳遞的對象時,它不保存到數據庫。所以我需要通過Active Admin來保存數據庫中的數組字段。如何在Active Admin Rails 4中保存數組?
感謝
我在Rails 4中使用Active Admin。在我的模型中,我有一個字段,它是Postgres數組類型,當我創建它在後臺傳遞的對象時,它不保存到數據庫。所以我需要通過Active Admin來保存數據庫中的數組字段。如何在Active Admin Rails 4中保存數組?
感謝
你有黑客東西,因爲主動管理不支持開箱即用,它似乎。
雖然這個答案是舊的,它的工作原理:How do you handle serialized edit fields in an Active Admin resource?
下面是我如何處理這種情況的總結。我在模型中添加了一個訪問器,該訪問器可以將數組轉換爲由換行符連接的字符串,並將其拆分回數組。
# 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
然後,在域我的管理資源,而不是使用:名稱字段,我用的是:names_raw領域。設置此值將使用新值保存名稱Array。
# app/admin/domains.rb
form do |f|
f.inputs "Domain" do
f.input :names_raw, :as => :text
end
f.buttons
end
這裏有一個類似的,但更簡單的拿一個解決方案,如果你不需要對管理員看中UI。
# 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
陣列型?你正在使用哪個數據庫服務器? – phoet
是的,Postgres服務器9.1 –
不好意思,請仔細閱讀我的問題???我試圖通過活動管理員保存它。 –