我们项目需求要关联表具有两个外键的功能,其实语法很简单代码如下
- class SubscriptionRecord < ActiveRecord::Base
- belongs_to :sender,
- :class_name => 'User',
- :foreign_key => 'sender_id'
- belongs_to :receiver,
- :class_name => 'User',
- :foreign_key => 'receiver_id'
- end
- class User < ActiveRecord::Base
- has_many :receivers,
- :class_name => "SubscriptionRecord",
- :foreign_key => "receiver_id"
- has_many :senders,
- :class_name => "SubscriptionRecord",
- :foreign_key => "sender_id"
- end
语法并不是很难,关键在于
- has_many :receivers,
- :class_name => "SubscriptionRecord",
而下面在说说一个新语法构建factory_girl的测试用例
代码如下
- factory :user_with_senders, :class => :user do
- ignore do
- sample_size 5
- end
- after_create do |user, evaluator|
- FactoryGirl.create_list(:subscription_record, evaluator.sample_size, sender: user)
- end
- end
- factory :user_with_metadata, :class => :user do
- ignore do
- sample_size 5
- end
- after_create do |user, evaluator|
- FactoryGirl.create_list(:metadatum, evaluator.sample_size, user: user)
- end
- end
主要是用了FactoryGirl.create_list 这个语法主要用处在于可以批量构建需要的关联表创建
语法FactoryGirl.create_list(:metadatum, evaluator.sample_size, user: user)
如上 第一个是创建的factory用列,而一个是创建的个数,第三个是属性值,也就是belong_to定义额外键。