2015-10-09 65 views
0

如果我有一个从另一个模型继承的模型,则关系不会被继承。这似乎是故意的,但为了我的目的,我想继承关系。继承活动记录关系的最佳方式是什么?Rails:允许子类继承关系

例如

class User 
    has_many :addresses 
end 

class OriginalUser < User 
    default_scope where('created_at <= ', DateTime.now - 5.years) 

    # how can I inherit the has_many :addresses relationship? 
end 
+0

从轨道控制台:'O = OriginalUser.new; o.addresses'应该返回'#'。有没有特别的东西没有用? –

+0

在您的评论@ TK-421之后,我重新检查了一下,它确实不是问题。不知道我在想什么......谢谢。 – steel

回答

1

测试您例如使用Rails 4.2.4我发现的关系实际上是继承

class Address < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :addresses 
end 

class OriginalUser < User 
end 

在导轨控制台:

2.2.3 :001 > user = User.create({name: 'Martin'}) 
2.2.3 :002 > address = Address.create({city: 'Berlin'}) 
2.2.3 :003 > user.addresses << address 
2.2.3 :004 > address.user 
=> #<User id: 1, name: "Martin", created_at: "2015-10-09 18:15:17", updated_at: "2015-10-09 18:15:17"> 

2.2.3 :005 > original_user = OriginalUser.create({name: 'Steel'}) 
2.2.3 :006 > another_address = Address.create({city: 'Boulder'}) 
2.2.3 :007 > original_user.addresses << another_address 
2.2.3 :008 > another_address.user 
=> #<OriginalUser id: 2, name: "Steel", created_at: "2015-10-09 18:20:58", updated_at: "2015-10-09 18:20:58"> 
2.2.3 :009 > original_user.addresses 
=> #<ActiveRecord::Associations::CollectionProxy [#<Address id: 2, city: "Boulder", user_id: 2, created_at: "2015-10-09 18:22:14", updated_at: "2015-10-09 18:22:48">]> 
+0

所以,我不知道我的问题是什么。但你是对的,谢谢。 – steel