0

首先,如果这是一个新手问题,我深表歉意。我只能在业余时间编码,所以我经常在每个项目中从头开始重新学习。

我有一个 Class, Person,其属性name为 ,birth-dategender,所以我可以创建一个 24 岁的男性 Michael 和一个 17 岁的女性 Belinda。

但是,还有其他隐藏的预定义属性应该根据年龄和性别自动分配给这些人。它们不是由人在创建时定义的,用户以后也不能编辑。

因此,例如,我们可以有隐藏属性favorite-bookfavorite-movie,它们会Person根据 18 岁以下的男性、18-40 岁的男性或 40 岁以上的男性而有所不同;或 18 岁以下的女性、18-40 岁的女性或 40 岁以上的女性。

我该怎么办?我应该在配置文件中创建这些属性Person,而不是在界面上显示它们,而是根据输入自动填写它们吗?或者将这些其他属性创建为“类别”之类的东西,并将人员分配给其中一个?请记住,我必须经常在界面中使用此信息,并且人们应该随着年龄的增长自动更改组。

另外,在 Rails 中如何做到这一点?有人告诉我“使用哈希”,但我不清楚这种方法的具体细节。

4

1 回答 1

1

我认为您的第一个建议应该可以正常工作“在人员配置文件中创建这些属性,但不在界面上显示它们,而是根据输入自动填写它们”。除非您试图说明这些额外数据是否复杂或庞大,否则将其存储在 Person 模型中应该没问题。这样的实现将如下所示:

class Person < ActiveRecord::Base
  after_validation :assign_favorites, :on => :create

  def assign_favorites
    if self.age < 18 && self.sex == 'male'
      self.favorite_book = 'Hunger Games'
    elsif self.age >= 18 && self.sex == 'male'
      ...
    end
  end
end
于 2012-09-21T16:19:53.107 回答