在写测试时很多时候我们都会利用fixtures构造数据,特别在构造关系表的数据时就显得特别麻烦。
我在看railscast 看到一种比较简单的方法,不用构造关系表,觉得有用,特别记录下来,便于以后查找:
##### /models/products.rb
class Product < ActiveRecord::Base
belongs_to :user
has_and_belongs_to_many :categories
end
##### /spec/fixtures/users.yml
lilei:
id: 1
name: lilei
hanmeimei:
id: 2
name: hanmeimei
##### /spec/fixtures/categories.yml
furnitur:
id: 1
name: Furniture
electronics:
id: 2
name: Electronics
##### /spec/fixtures/products.yml
couch:
id: 1
name: couch
price: 199.00
user: lilei #不再使用 user_id: 1
categories: furniture
computer:
id: 2
name: computer
price: 366.00
user: hanmeimei #不再使用 user_id: 2
categories: furniture,electronics
用了categories 就直接省去了建立products_categories 这个中间表的数据:
##### /spec/fixtures/products_categories.yml
couch_furniture:
product_id: 1
category_id: 1
computer_furniture:
product_id: 2
category_id: 1
computer_electronics:
product_id: 2
category_id: 2