Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 可以使用Rails中的合成来创建一个对象,该对象具有包括其复合对象的方法的接口吗?_Ruby On Rails_Ruby On Rails 4_Rails Activerecord - Fatal编程技术网

Ruby on 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类成为唯一与之交互的类,并使

我试图通过组合解决Rails应用程序中的一个领域建模问题

我有一个通用的活动记录
User
类(在
users
表中有一些属性),但是我们有一些不同的用户风格。其中一些不同的用户类型将数据存储在不同的位置(出于遗留原因)

例如:
BlueUser
对象的
email
属性存储在
DB.blue\u用户
表中,而
RedUser
对象的电子邮件存储在
DB.red\u用户
中。请注意,
blue\u用户
red\u用户
没有相同的表结构,他们只是碰巧都有一封
电子邮件

我的意图是让generic
User
类成为唯一与之交互的类,并使用composition从它们自己的属性和方法中“创建”
User
对象,以及复合对象的属性和方法(让我们称之为
User\u Record
对象)

因此,
User
类将有自己的方法,但是在运行时,当
User
被实例化时(可能在初始化之后通过
),一个
RedUser
BlueUser
对象可以在
User
中被实例化为
User\u记录
对象。每个
用户记录
对象/实现本身都是活动记录模型。然后,我希望如果我请求属性
User.email
,可以从
User\u Record
对象中提取它(而不必像
User.Record.email
那样调用它),就可以这样做

我看了一下Rails中由
组成的
,但不确定如何统一这两个对象的属性/方法(这样我就不必在代码库的其他地方执行
User.record.email

我希望我的解释清楚,但如果不清楚,我很乐意再尝试一次