我的factories.rb文件变得太大而无法维护,我现在正试图将其拆分到factories目录中的许多文件中.问题是我不知道如何处理依赖项.
总而言之,我试图以下列方式分割我的工厂.所有序列都转到sequences.rb文件,每个工厂定义都转到单独的文件,如下所示:
工厂/ sequences.rb
FactoryGirl.define do
sequence :name {|n| "Name #{n}" }
sequence :email {|n| "person#{n}@example.com" }
end
Run Code Online (Sandbox Code Playgroud)
工厂/ user.rb
FactoryGirl.define do
factory :user do
name
email
end
end
Run Code Online (Sandbox Code Playgroud)
工厂/ post.rb
FactoryGirl.define do
factory :post do
name
content "Post Content"
user
end
end
Run Code Online (Sandbox Code Playgroud)
当我运行测试时,我得到的name是没有定义的错误.我可以通过传递一个块的每个关联(如处理这个name,email,user等)提及,但它似乎是丑陋和不干燥.
factory_girl知道应该加载哪些文件的序列?我开发网站,并希望为每个用户增加声誉值.所以我正在寻找具有以下功能的用户信誉引擎:
有人知道有没有这种引擎的实现?首先,我对python/django实现很感兴趣但其他任何对我都很有趣.
我有很多具有投票功能的模型,所以我创建了一个这样的结构:
class Voteable(models.Model):
likes_balance = models.IntegerField(default=0, editable=False)
votes = models.ManyToManyField(User, blank=True, editable=False)
likes = models.ManyToManyField(User, blank=True, editable=False)
class Meta:
abstract = True
class Item(Voteable):
title = models.CharField(max_length=20, db_index=True)
description = models.TextField(max_length=1000)
contact_user = models.ForeignKey(User, null=True, blank=True)
class Meta:
abstract = True
class Movie(Item):
cover = models.ImageField(upload_to='images/covers/')
class Car(Item):
seller = models.CharField(max_length=50)
Run Code Online (Sandbox Code Playgroud)
当我尝试使用"python manage.py syncdb"创建表时,我收到错误消息:
m2m字段的访问者'喜欢'与相关字段'User.movie_set'的冲突.将related_name参数添加到"likes"的定义中.
因为我在Item类中有更多的字段,所以不想将它们全部复制到所有子类,只是设置像错误建议的related_name.
有什么建议怎么处理吗?