-3

私は2つのテーブルユーザーと友人を持っています.

ユーザーテーブルは次のようになります。

[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]

ユーザーの友人を教育によってグループ化したいと思います。

  • ユーザーの友達をhighschool_nameでグループ化
  • ユーザーの友人を college_name でグループ化
  • ユーザーの友人を Graduateschool_name でグループ化する

私が作ったこのフォトショップのモックアップのように:

ここに画像の説明を入力

私は Rails 3 の開発者であり、これを行うためにアクティブ レコードを使用したいと考えています。ヒントやアイデアは大歓迎です。

4

1 に答える 1

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
于 2012-07-14T15:58:40.307 に答える