2017-04-14 6 views
2

私はactiveadminで二回同じモデルを登録しました:ルビー - 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

私はdidnの」 ActiveAdminで作業しますが、レールモデル内にバリデーションを追加していませんか?あなたがそれをすれば、単純な心配は十分かもしれません:)私はそれが事実なら助けることができます。 – 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 
関連する問題