如何在 ruby 数据映射器中设置一个 属性 作为同一对象的另一个 属性 的函数?

How to set a property in ruby datamapper that is a function of another property of the same object?

我想向 ruby 数据映射器模型添加两个新属性,一个是时间戳 属性 的日期转换,另一个是通过唯一键连接的另一个对象的值.

所以对于第一种情况我有 属性:日期,日期时间

我想再添加一个 属性 :date_date, 日期 默认情况下等于 date.to_date

您应该查看文档:https://datamapper.org/docs/properties.html

特别是关于 "Available Types" 和 "Setting default values" 的部分。

你可以这样做:

property :date_date, Date, default: -> do |obj, prop|
  obj.date.to_date
end

您也可以通过回调(https://datamapper.org/docs/callbacks.html)进行设置,例如:

property :date_date, Date

before_save :set_date_date

def set_date_date
  self.date_date = date.to_date
end

请注意,它在 Rails' ActiveRecord 中的工作方式基本相同。