j'espérais que quelqu'un repérer pourquoi cela ne fonctionnerait pas.Quelque chose de mal dans ma séquence de création d'usine
Je reçois une erreur thats étant appelé parce que les attributs que je spécifions avec Factory_Girl ne sont pas appliquées au talon avant validation.
L'erreur:
undefined method `downcase' for #<Category:0x1056f2f60>
RSpec2
it "should vote up" do
@mock_vote = Factory.create(:vote)
Vote.stub(:get_vote).and_return(@mock_vote)
get :vote_up, :id => "1"
end
usines
Factory.define :vote, :class => Vote do |v|
v.user_id "1"
v.association :post
end
Factory.define :post, :class => Post do |p|
p.category "spirituality"
p.name "sleezy snail potluck"
p.association :category
end
Factory.define :category, :class => Category do |c|
c.name "spirituality"
c.id "37"
end
post.rb - Modèle
before_save :prepare_posts
validate :category?
def prepare_posts
self.update_attribute("category", self.category.downcase)
if self.url?
self.url = "http://" + self.url unless self.url.match /^(https?|ftp):\/\//
end
end
def category?
unless Category.exists?(:name => self.category.downcase)
errors.add(:category, "There's no categories with that name.")
end
return true
end
Aussi, ne hésitez pas à pinailler tout code à la recherche de manière flagrante brut. : D
Merci !!
En ce qui concerne nitpicks, les choses ': class => Vote/Post/Category' sont redondantes, car factory_girl déduira la classe de votre nom d'usine (: vote devient Vote,: poste devient Post, etc.) –
Ah Je le pensais! J'aimerais que leur documentation dise cela. Merci! – Trip