如何在Rails上为新用户设置或分配预定义属性

时间:2012-09-21 16:07:34

标签: ruby-on-rails attributes user-profile

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

我有一个类Person,其属性为namebirth-dategender,所以我可以创建一个24岁的迈克尔男,和Belinda,一名17岁的女性。

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

因此,举例来说,我们可以拥有隐藏属性favorite-bookfavorite-movie,它们会有所不同,具体取决于Person是18岁以下的男性,男性是18岁40岁,或40岁以上的男性;或18岁以下的女性,18-40岁的女性或40岁以上的女性。

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

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

1 个答案:

答案 0 :(得分:1)

我认为你的第一个建议应该可以正常工作“在Person配置文件中创建这些属性,但不要在界面上显示它们,只是根据输入自动填充它们”。除非您试图说明这些额外的数据是精细还是巨大,否则将其存储在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