积极记录 - 小组教育

时间:2012-07-14 15:29:41

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我有两个标签用户和朋友,

用户表格如下所示:

[id, name, image, location, highschool_name, highschool_year, college_name, college_year, graduteschool_name, graduate_year ]

朋友表格如下:

[id, uid, name, image, higschool_name, college_name, graduateschool_name, user_id]

我想通过eduaction对用户朋友进行分组:

  • 通过highschool_name
  • 对用户朋友进行分组
  • 按学院名称分组用户朋友
  • 由graduateschool_name分组用户朋友

像我做的这个photoshop模型:

enter image description here

我是Rails 3的开发者,并希望使用有效记录来做到这一点,欢迎任何提示或想法。

1 个答案:

答案 0 :(得分:1)

您应该创建高中,大学和毕业学校模型,并与用户建立关系。 朋友的数据应该是用户模型。

所以你应该

User
  has_many :friendships
  has_many :friends, :through => :friendships
  has_many :inverse_friendships, :class_name => "Friendship", :foreign_key => "friend_id"
  has_many :inverse_friends, :through => :inverse_friendships, :source => :user
  belongs_to :higschool
  belongs_to :college
  belongs_to :graduateschool

Friendship
  belongs_to :user
  belongs_to :friend, :class_name => "User"

Higschool
  has_many :users

College
  has_many :users

Graduateschool
  has_many :users

所以,现在我觉得你可以做点什么。

@higschool_friends = Hash[]
current_user.friends.group_by(&:higschool) do | higschool, friends |
  @higschool_friends[higschool] = friends
end

@college_friends = Hash[]
current_user.friends.group_by(&:college) do | college, friends |
  @college_friends[college] = friends
end

@graduateschool_friends = Hash[]
current_user.friends.group_by(&:graduateschool) do | graduateschool, friends |
  @graduateschool_friends[graduateschool] = friends
end