0

我有一个项目 Ruby on Rails 和两个使用继承的模型:

class A < ActiveRecord::Base
   attr_accessible :name
   validates :name, :presence => true
end

class B < A
   attr_accessible :age
   validates :age, :presence => true
end

在我的 a_spec.rb 我可以检查这个:

it 'should be invalid' do
  @a.should_not be_valid
end

但在我的 b_spec.rb 我不能检查这个:

it 'should be invalid' do
   @b.should_not be_valid
end

我收到以下错误:

1) B 应该是有效的失败/错误:@b.should_not be_valid NoMethodError: undefined method age' for #<B id: nil, name: nil, created_at: nil, updated_at: nil> # ./spec/models/b_spec.rb:6:inblock (2 levels) in '

任何人都可以帮我解决它吗?非常感谢。

4

1 回答 1

0

Rails 通常不会那样做关系。

除非你有充分的理由,否则你所有的模型都应该继承自 ActiveRecord::Base

您可以通过向相关模型添加 _type 字段来使用单表继承 (STI) 对继承建模。

有关 Active Record 的更多信息,请访问http://api.rubyonrails.org/classes/ActiveRecord/Base.html

于 2013-06-20T23:02:31.407 回答