Activerecord 活动记录合成

Activerecord 活动记录合成,activerecord,ruby-on-rails-4,Activerecord,Ruby On Rails 4,遵循单一责任原则,我希望将一些属性和状态放在一个单独的类中,但是,我希望它位于同一个表中 例如: class Person attr_accessible :name, :age end class Measures attr_accessible :weight, :height, :other_attrs end 如何将度量值组合到Person中,并将度量值数据存储在Person表中?我不确定这是否适用于rails 4,但在rails 3中,您可以执行以下操作 class Mea

遵循单一责任原则,我希望将一些属性和状态放在一个单独的类中,但是,我希望它位于同一个表中

例如:

class Person
  attr_accessible :name, :age
end

class Measures
  attr_accessible :weight, :height, :other_attrs
end

如何将度量值组合到Person中,并将度量值数据存储在Person表中?

我不确定这是否适用于rails 4,但在rails 3中,您可以执行以下操作

class Measures
  self.table_name = 'name_of_the_person_table'
  attr_accessible :weight, :height, :other_attrs
end

试试看

我不确定这是否适用于rails 4,但在rails 3中,您可以执行以下操作

class Measures
  self.table_name = 'name_of_the_person_table'
  attr_accessible :weight, :height, :other_attrs
end

试试看

ActiveRecord为此包含一个特定功能

class Person
  composed_of :measures
end
如果无法从声明中推断类名,请添加class_name选项。在您的示例中,这不是必需的。如果数据库列未精确映射到度量对象的属性,请添加:映射选项,例如:

  composed_of :measures, mapping: %w[database_column_name, object_attribute_name]
如果要在检索时创建度量值或分配新值时执行自定义操作,请分别使用构造函数和转换器选项,并向它们传递一个过程。这是有案可查的

注意事项:

由对象组成的对象是值对象。不要改变,它是 属性,而不是指定对象的新版本。 目前正在进行一项将此功能从Rails转移到gem的行动。这个 到目前为止,尝试删除它未成功,它仍处于运行状态 轨道4。
ActiveRecord包含此功能的特定功能

class Person
  composed_of :measures
end
如果无法从声明中推断类名,请添加class_name选项。在您的示例中,这不是必需的。如果数据库列未精确映射到度量对象的属性,请添加:映射选项,例如:

  composed_of :measures, mapping: %w[database_column_name, object_attribute_name]
如果要在检索时创建度量值或分配新值时执行自定义操作,请分别使用构造函数和转换器选项,并向它们传递一个过程。这是有案可查的

注意事项:

由对象组成的对象是值对象。不要改变,它是 属性,而不是指定对象的新版本。 目前正在进行一项将此功能从Rails转移到gem的行动。这个 到目前为止,尝试删除它未成功,它仍处于运行状态 轨道4。