0

ユーザーの 3 つの包括的な属性に基づいて、他のユーザーがフィルター処理できるようにするすべてのユーザーのリストがあります。

  1. 業界 (ユーザーが以前に働いていた業界に加えて、ユーザーが現在働いている業界)
  2. 会社 (過去の会社に加えて、ユーザーが現在勤務している会社)
  3. 学校 (ユーザーが通った学校)。

これらの属性は LinkedIn から取り込まれているため、各業界/会社/学校は、ユーザー モデルの独自のデータ フィールド (現在/過去 1 つ/過去 2 つなど) になります。

User モデルの図を示すスキーマの一部を次に示します。

create_table "users", :force => true do |t|
    ...
    t.string   "first_name"
    t.string   "last_name"
    ...
    t.string   "current_company"
    t.string   "past_company_one"
    t.string   "past_company_three"
    ...
    t.string   "current_industry"
    t.string   "past_industry_one"
    t.string   "past_industry_two"
    t.string   "past_industry_three"
    ...
    t.string   "school_zero_name"
    t.string   "school_one_name"
   ...
end

ユーザーが返されたユーザーのリストを動的にフィルター処理するために使用できる 3 つの collection_select フィールド (業界/会社/学校) が必要です。ここにある 3 つの選択/フィルター フィールドと非常によく似た外観と機能です: https://angel.co/startups

これについてどこから始めればよいか正確にはわかりません。実際に助けを借りることができます。ありがとうございました。

4

1 に答える 1

0

別々のモデルに 3 つの属性表現を持たせることを検討します。したがって、ユーザーの過去と現在の会社、業界、および学校の​​エントリを格納するための Company、Industry、および School モデルを持つことになります。

そうすることで、各企業/学校/業界は、ユーザーがどのくらいの期間勤務/通学したかなど、より多くの属性を持つことができます。これにより、User モデルを使用して 3 つのモデル間のモデルの関連付けを設定すると、user.companies または user.schools と言うのと同じくらい簡単になります。Company および Industry モデルにフィールドを追加して、ユーザーが現在働いている会社または業界を示し、ユーザーが過去に働いていた会社/業界を区別することもできます。

このようなもの:

class User < AR::Base
  has_many :companies
  has_one  :current_company, :class_name => "Company", :conditions => { :current => true }
end

class Company < AR::Base
  # == Schema attributes
  #
  #  id               :integer(4)      not null, primary key
  #  name             :integer(4)
  #  user_id          :integer(4)
  #  current          :boolean         :default => false, :null => false
  #  start_date       :date
  #  end_date         :date

  belongs_to :user
end
于 2012-08-17T14:13:22.840 に答える