2009-08-21 13 views
1

Lors de la soumission d'un formulaire d'objet imbriqué, je ne peux pas l'obtenir pour rejeter des objets enfants invalides car le proc reject_if ne voit pas l'attribut Paperclip.Rails Formes d'objets imbriquées avec Paperclip - trombone attrs ignoré par reject_if

Voici les parties pertinentes de mes modèles & formes:

class Stage < ActiveRecord::Base 
    has_and_belongs_to_many :assets, :uniq => true 
    accepts_nested_attributes_for :assets, :reject_if => lambda { |attrs| attrs['asset'] } 

    ... 
end 

class Asset < ActiveRecord::Base 
    has_attached_file :asset, :path => "#{Rails.root}/public/:attachment/:id/:style/:basename.:extension", 
          :url => ":attachment/:id/:style/:basename.:extension" 
    validates_attachment_presence :asset 
end 

- form_for [@campaign, @stage], :html => {:multipart => true} do |f| 
.... 
    - f.fields_for :assets do |asset_form| 
    - field_set_tag do 
     - if asset_form.object.new_record? 
     %h4 New Asset 
     %p 
     = asset_form.label :asset, "File" 
     %br 
     = asset_form.file_field :asset 
     %p 
     = asset_form.label :identifier 
     %br 
     = asset_form.text_field :identifier 

je mets un débogueur dans la partie reject_if:

(rdb:1) p attrs 
{"identifier"=>""} 

Je pensais que c'était parce qu'il ne regarde que les attributs qui sont colonnes, mais ce n'est pas non plus, comme je l'ai trouvé en ajoutant un attr_accessor à l'actif

p attrs 
{"misc_attr"=>"", "identifier"=>""} 

Je pourrais continuer encore et encore avec les ins de & outs étranges mais je veux obtenir ceci dehors et voir qui a eu ce problème avant.

Répondre

0

Je ne sais pas si cela est le point, mais shouldn't il y a dans la classe d'actifs une ligne qui déclare l'association à la classe de scène comme:

class Asset < ActiveRecord::Base 
    has_and_belongs_to_many :stages 

??

Questions connexes