Rails中的composed_of – 什么时候使用它?
什么时候应该使用ActiveRecord的composed_of
类方法?
就个人而言,我认为当你有没有存储在数据库中的对象时,这很有用,如数据库中所示,例如温度,gps位置,平衡等。
您可能会问为什么那些不存储在数据库中? 在数据库中我们只存储一个值,但如果我们想要将有用的相关方法附加到该值,
例如
-
在温度的情况下,我们可能需要像
to_fahrenheit
,to_celsius
,is_boiling_point?
等等 -
在gps位置的情况下,我们可能需要像
distance_from(point)
,route_to(point)
等方法
所以当我们可以为这些对象创建类时,它非常有用,并使用composed_of来动态初始化这些对象
希望它有帮助=)
一个更复杂的例子,说明如何使用composed_of
和Money :
composed_of :price, :class_name => "Money", :mapping => [%w(cents cents), %w(currency currency_as_string)], :constructor => Proc.new { |cents, currency| Money.new(cents || 0, currency || Money.default_currency) }, :converter => Proc.new { |value| value.respond_to?(:to_money) ? value.to_money : raise(ArgumentError, "Can't convert #{value.class} to Money") }
资料来源: github wiki 。
- Rails 4 x paper_trail:使用嵌套资源按item_id过滤版本
- Ruby on Rails指导Activerecord关联文档不正确?
- 你会如何建立这个每日课程表?
- 从范围记录计算总数百分比并显示虚拟属性(Rails / Active Record)
- Rails has_many:through,null belongs_to,multiple belongs_to和belongs_to的删除?
- Rails:uniq vs. distinct
- 如何避免多个查询:包含在Rails中?
- 有没有办法validationActiveRecord上的特定属性而不首先实例化对象?
- 检索给定用户评论的所有post,Ruby on Rails