2017-04-14 67 views
2

我做了兩次activeadmin註冊相同的型號:Ruby on Rails的 - Activeadmin,不同的驗證相同型號

ActiveAdmin.register Media, as: 'Picture' do 
end 
ActiveAdmin.register Media, as: 'Video' do 
end 

但我想有根據類型不同的驗證。我想這對於視頻:
型號/ video.rb

而本作畫面:
型號/ picture.rb

validate :validate_picture_count 
def validate_picture_count 
    errors.add(:error, "Require minimum 1 picture") if self.pictures.size < 1 
end 
+0

我沒有」 t與ActiveAdmin一起工作,但不是在rails模型中添加驗證嗎?如果你這樣做,一個簡單的關注可能就足夠了:)如果是這樣的話,我可以幫忙。 – radubogdan

+0

這些線上的「self」是什麼:'self.pictures.size'和'self.videos.size'? – lcguida

+0

它的屬性來自模型 – KingOfBabu

回答

1

什麼是你不這樣做的簡單的原因

ActiveAdmin.register Picture do 
end 
ActiveAdmin.register Media do 
end 

這會解決您的問題,我想。

如果必須註冊遺憾的是,因爲在這activeadmin取決於inherited_resources寶石中的錯誤的超類,需要強制權的子類的實例,就像這樣:

controller do 
    def create 
    klass = Picture # or Video or another subclass 
    set_resource_ivar(klass.new(permitted_params["media"])) 

    super 
    end 

    def update 
    # similar pattern here to #create 
    end 
end