1
У меня есть много разных отношений между документами.RSpec тестирование без проверки has_many через отношения
Скажем, у меня есть document1
и document2
. У меня есть много-много таблиц, где есть родители и дети.
document.rb
has_many :child_relationships, :class_name => "DocumentRelationship", :foreign_key => "child_id", :dependent => :destroy
has_many :parents, :through => :child_relationships, :source => :parent
has_many :parent_relationships, :class_name => "DocumentRelationship", :foreign_key => "parent_id", :dependent => :destroy
has_many :children, :through => :parent_relationships, :source => :child
document_relationship.rb
belongs_to :parent, :class_name => "Document", :foreign_key => "parent_id"
belongs_to :child, :class_name => "Document", :foreign_key => "child_id"
validates_uniqueness_of :child_id, :scope => [:parent_id]
validates_presence_of :parent_id
validates_presence_of :child_id
validate :obeys_chronology
def obeys_chronology
errors.add(:child_id, "must be created after its parent") if child_id.to_i < parent_id.to_i
errors.add(:child_id, "cannot be its own parent") if child_id.to_i == parent_id.to_i
end
Если я скажу document2.children << document1
уместнее не проходит проверку, но я не знаю, как написать тест для этого ,
Есть ли лучший способ сделать это?
Я просто попробовал это. Ошибка/ошибка: d2.children << d1 ActiveRecord :: RecordInvalid: Не удалось выполнить проверку. Ребенок должен быть создан после его родителя. # ./spec/models/document_spec.rb:65:in 'block (3 levels) in ' –
Cyrus