J'écris un rspec pour un modèle d'adresse qui a un attribut polymorphe appelé :addressable
. J'utilise une fille d'usine pour tester.rspec validates_presence_of attributs polymorphes ruby sur rails
Ce modèle n'a pas de contrôleur car je ne souhaite pas créer une adresse autonome, mais cela n'empêche pas le rspec de créer une adresse autonome. Mon modèle, usine et rspec sont
class Address < ActiveRecord::Base
belongs_to :addressable, :polymorphic => true
belongs_to :state
attr_accessible :street, :city, :state_id, :zip
validates_presence_of :street, :city, :zip, :state
validates_associated :state
end
Factory.define :address do |address|
address.street "1234 Any st"
address.city "Any City"
address.zip "90001"
address.association :state
end
describe Address do
before(:each) do
state = Factory(:state)
@attr = {:street => "1234 Any St", :city => "Any City", :zip => "Any Zip", :state_id => state.id}
end
it "should create a new address given valid attributes" do
Address.create!(@attr).valid?.should be_true
end
end
Ce test rspec va créer une adresse avec addressable_id et addressable_type NULL et NULL, mais si je crée de tout autre modèle, permet de dire un modèle d'utilisateurs ou d'un modèle de magasin, il sera mis dans les bonnes données. Donc ce que je suis en train de comprendre et de la recherche, sans succès, comment voulez-vous validate_presence_of un attribut polymorphes et le tester dans une usine.
Désolé d'être long, mais je n'ai pas été en mesure de trouver une solution pour cela au cours des dernières heures et je commence à considérer que je pourrais aborder ce problème.