0

我有模型:

class Company < ActiveRecord::Base
  attr_accessible :name, :address, :description, :email, :www   
  validates_presence_of :name, :address, :email
  validates_uniqueness_of :user, :name, :email
  validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i, :on => :create
  has_many :items, :dependent => :destroy
  has_one :user  
end

和测试用例:

class CompanyTest < ActiveSupport::TestCase
  should_allow_mass_assignment_of :name, :address, :description, :email, :www
  should_have_one :user
  should_have_many :items, :dependent => :destroy
  should_validate_uniqueness_of :name, :email  #failed
  should_validate_presence_of :name, :address, :email  #failed
  should_not_allow_values_for :email, "not valid email"  #failed
  should_allow_values_for :email, "test@test.com"  #failed
end

一些生成的测试失败并出现奇怪的错误:

ActiveRecord::StatementInvalid: SQLite3::SQLException: no such column: companies.user: SELECT "companies".id FROM "companies" WHERE ("companies"."user" IS NULL)  LIMIT 1

我不明白为什么它试图访问公司表的“用户”列。它不存在,因为用户模型包含“belongs_to :company”和列“company_id”

4

2 回答 2

0

验证错误:

validates_uniqueness_of :user

没有这条线,一切都好!

于 2010-06-20T07:18:49.430 回答
0

Afaik has_one 期望源表定义relation_id 列。在您的情况下,我假设公司表存储 user_id 列。因此,您必须更改 has_one 定义以指定方向和外键,或将其更改为 belongs_to。

于 2010-06-19T22:14:40.313 回答