2011-01-23 7 views
0

私はUserモデルとGoalモデルを持っています。目標モデルには名前と型の列があり、現在は次の3つのレコードがあります。Railsで2つのテーブルをカスタムメタデータで結合する

name   | type 
------------------------ 
Read Novels | Reading 
Read Newspaper | Reading 
Write Reviews | Writing 

は、今私は、各ユーザー、彼らは毎月この活動に費やす時間数(hours_per_month)を記入するためのインタフェース、および彼らはそれを行う別の日数(days_per_month)を提供します。理想的には

current_user = User.find(params[:id]) 

current_user.goals.each do |goal| 
    puts goal.name 
    puts goal.type 
    puts goal.hours_per_month 
    puts goal.days_per_month 
end 

がどのようにユーザーに目標​​を結合し、この新しいテーブル/モデルを作成し、静的な目標の属性へのアクセス権を持っている必要がありますように、私はデータで仕事をしたいと思いますし、上記のコードサンプルのように、ユーザーが値を入力しましたか?

答えて

1

あなたはActivityモデルを作成し、それになどのテーブル定義与えることができる:

活動:

  • のuser_id
  • goal_id
  • hours_per_month
  • days_per_month

を次に追加する:

User 
    has_many :activities 
    has_many :goals, :through => :activity 

Goal 
    has_many :activities 
    has_many :users, :through => :activity 

Activity 
    belongs_to :user 
    belongs_to :goal 

作業iircのほとんどを行うためにジェネレータを使用できます。

1

表goals_users

column: user_id 
column: goal_id 
column: hours_worked 

モデル:

ユーザー:

has_and_belongs_to_many :goals 

目標:

has_and_belongs_to_many :users 

def hours_per_month 
    #calculate 
end 

def hours_per_day 
    #calculate 
end 

明らかに、追加の列は結合の外側に設定してください。 ARを使用して、任意のモデルで

追加

あなたが直接仲介レコードにアクセスする必要があります参加します。

関連する問題