1
我開始與RSpec的,所以我不知道如何進行以下操作:如何用rspec製作多對多模型?
我有User
和Label
稱爲Assignment
之間的許多一對多表。 例如
- 「用戶A」 被分配給 「IT」
- 「用戶B」 被分配給 「研究」
製造者:
Fabricator(:label) do
name { sequence(:name) { |i| "Label #{i}" } }
end
Fabricator(:user) do
email { sequence(:email) { |i| "user#{i}@email.com" } }
password 'password'
end
型號:
class Label < ActiveRecord::Base
has_many :issues
has_many :assignments
has_many :users, :through => :assignments
class User < ActiveRecord::Base
has_many :assignments
has_many :labels, :through => :assignments
class Assignment < ActiveRecord::Base
belongs_to :user
belongs_to :label
end
class Issue < ActiveRecord::Base
belongs_to :user
belongs_to :label
after_create :print_first_user_label_email
def print_first_user_label_email
puts self.label.users.first.email
end
end
問題必須在每次創建問題時打印分配給問題標籤的用戶。但它要求標籤應該已經與用戶(任務)有鏈接。
所以,一個簡單的工房(:發行)將觸發:
let(:issue) { Fabricate(:issue) }
-- Output ---------------------------------------
Failure/Error: let(:issue) { Fabricate(:issue) }
NoMethodError:
undefined method `email' for nil:NilClass
那麼,我該如何解決。打樁?以某種方式播種桌子?在製造商中定義?
任何幫助將是偉大的!