我有一個模型,其中很小比例的對象將具有相當大的描述性文本。爲了保持我的數據庫的規範化,我想將這個描述性文本提取到單獨的模型中,但是在ActiveAdmin中創建合理的工作流程時遇到了問題。在ActiveAdmin中編輯has_one關聯 - 當屬性空白時銷燬
我的模式是這樣的:
class Person < ActiveRecord::Base
has_one :long_description
accepts_nested_attributes_for :long_description, reject_if: proc { |attrs| attrs['text'].blank? }
end
class LongDescription < ActiveRecord::Base
attr_accessible :text, :person_id
belongs_to :person
validates :text, presence: true
end
目前,我已經創建了一個表單編輯Person模型,有些看起來像這樣:
form do |f|
...
f.inputs :for => [
:long_description,
f.object.long_description || LongDescription.new
] do |ld_f|
ld_f.input :text
end
f.actions
end
這適用於添加/編輯LongDescription對象,如果沒有文本輸入,它會驗證/創建LongDescription對象。
我想要實現的是也能夠刪除LongDescription對象,例如,如果text
屬性曾被設置爲空字符串/ nil。
任何有比我更好的Rails或ActiveAdmin技能的人都知道如何做到這一點?
你'reject_if:reject_if:'在你的榜樣,我以爲是一個錯字? – seanlinsley
如果你有'validates_presence_of:text',你的數據庫不應該處於'text'屬性爲零的狀態。 – seanlinsley
是的,對不起。這是一個錯字。 – rogerkk