Moh*_*nas 11 arrays model activeadmin ruby-2.0 ruby-on-rails-4
我在Rails 4中使用Active Admin.在我的模型中,我有一个字段是Postgres数组类型,当我创建它在后台传递的对象但它没有保存到数据库.那么我需要做什么来通过Active Admin将数组字段保存在数据库中.
谢谢
你有黑客的东西,因为主动管理员不支持开箱即用,似乎.
虽然这个答案很老,但它的工作原理是:如何处理Active Admin资源中的序列化编辑字段?
以下是我如何处理这种情况的摘要.我添加了一个模型的访问器,它可以将Array转换为由换行符连接的字符串并将其拆分回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
Run Code Online (Sandbox Code Playgroud)
然后,在我的域管理资源中,我使用了:names_raw字段,而不是使用:names字段.设置此值将使用新值保存名称Array.
# app/admin/domains.rb
form do |f|
f.inputs "Domain" do
f.input :names_raw, :as => :text
end
f.buttons
end
Run Code Online (Sandbox Code Playgroud)
如果您不需要管理员使用精美的UI,这是一个类似但更简单的解决方案。
# app/model/thing.rb
def some_array_column= items
if items.is_a? String
super items.split(" ")
else
super items
end
end
Run Code Online (Sandbox Code Playgroud)
和
# app/admin/thing.rb
ActiveAdmin.register Thing do
index do
column "Things" { |t| (t.some_array_column || []).join(" ") }
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5081 次 |
| 最近记录: |