首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将非属性值传递给Machinist蓝图

将非属性值传递给Machinist蓝图
EN

Stack Overflow用户
提问于 2011-10-22 05:24:10
回答 1查看 217关注 0票数 1

这是我想要做的一个简化的例子。

假设我有一个对象Person

代码语言:javascript
复制
Person.blueprint do
  name
  age
end

我希望能够做这样的事情:

代码语言:javascript
复制
Person.blueprint(:from_birthdate) do
  name
  age { Time.now - birthdate }
end

Person.make(:from_birthdate, :birthdate => 5.years.ago)

但是,不允许将不是Person对象实际属性的值传递给make。有没有一种方法可以将任意对象传递给蓝图?

EN

回答 1

Stack Overflow用户

发布于 2011-10-22 05:40:42

您可以为birthdate创建一个attr_accessor,但这似乎有点傻。您可能只需要定义一个单独的方法:

代码语言:javascript
复制
def Person.make_from_birthdate(attributes)
  birthdate = attributes.delete :birthdate
  Person.make attributes.merge(:age => Time.now - birthdate)
end

然而,存储年龄通常是一种糟糕的做法。由于年龄随时间变化,而出生日期不随时间变化,您通常希望将生日存储在数据库中,并根据需要计算年龄(基于今天的日期)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7855435

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档