通过别名测试关联

时间:2013-05-30 17:31:00

标签: ruby-on-rails ruby-on-rails-3 rspec rspec-rails

我是TDD和Rails的新手。 我正在尝试测试一个“别名”关联(不知道这是否是一个有效的术语)。

我的测试:

it 'an order should always have a customer' do
  o = Order.new
  o.should_not be_valid
end

我的模特:

class Order < ActiveRecord::Base
  belongs_to :customer, :class_name => Person
  validates_associated :customer
end

我不知道 validates_associated 是否符合它的含义。我的测试仍将'custumer_id:nil'的订单计为有效。

人物模型:

class Person < ActiveRecord::Base
  attr_accessible :first_name, :last_name, :middle_name
  validates_presence_of :first_name, :last_name

  has_many :addresses
  has_many :orders, :as => :customer
end

我想确保每个保存的订单都有一个关联的客户(一个Person对象)。 我错过了什么吗?

1 个答案:

答案 0 :(得分:0)

validates_associated仅告诉模型,还应对相关对象运行验证(查看文档here)。您仍需要在Order上添加验证。看看this SO question。我可能是错的,但我认为它会指向你正在寻找的方向。