Ruby on rails 可以使用Rails中的合成来创建一个对象,该对象具有包括其复合对象的方法的接口吗?
我试图通过组合解决Rails应用程序中的一个领域建模问题 我有一个通用的活动记录Ruby on rails 可以使用Rails中的合成来创建一个对象,该对象具有包括其复合对象的方法的接口吗?,ruby-on-rails,ruby-on-rails-4,rails-activerecord,Ruby On Rails,Ruby On Rails 4,Rails Activerecord,我试图通过组合解决Rails应用程序中的一个领域建模问题 我有一个通用的活动记录User类(在users表中有一些属性),但是我们有一些不同的用户风格。其中一些不同的用户类型将数据存储在不同的位置(出于遗留原因) 例如:BlueUser对象的email属性存储在DB.blue\u用户表中,而RedUser对象的电子邮件存储在DB.red\u用户中。请注意,blue\u用户和red\u用户没有相同的表结构,他们只是碰巧都有一封电子邮件 我的意图是让genericUser类成为唯一与之交互的类,并使
User
类(在users
表中有一些属性),但是我们有一些不同的用户风格。其中一些不同的用户类型将数据存储在不同的位置(出于遗留原因)
例如:BlueUser
对象的email
属性存储在DB.blue\u用户
表中,而RedUser
对象的电子邮件存储在DB.red\u用户
中。请注意,blue\u用户
和red\u用户
没有相同的表结构,他们只是碰巧都有一封电子邮件
我的意图是让genericUser
类成为唯一与之交互的类,并使用composition从它们自己的属性和方法中“创建”User
对象,以及复合对象的属性和方法(让我们称之为User\u Record
对象)
因此,User
类将有自己的方法,但是在运行时,当User
被实例化时(可能在初始化之后通过),一个RedUser
或BlueUser
对象可以在User
中被实例化为User\u记录
对象。每个用户记录
对象/实现本身都是活动记录模型。然后,我希望如果我请求属性User.email
,可以从User\u Record
对象中提取它(而不必像User.Record.email
那样调用它),就可以这样做
我看了一下Rails中由
组成的,但不确定如何统一这两个对象的属性/方法(这样我就不必在代码库的其他地方执行User.record.email
)
我希望我的解释清楚,但如果不清楚,我很乐意再尝试一次