0

Well my models are User, Exercise and Writing.

class User < ActiveRecord::Base
    has_many :exercises, :through => :writings
    has_many :writings
end

class Exercise < ActiveRecord::Base
    has_many :users, :through => :writings
    has_many :writings
end

class Writing < ActiveRecord::Base
    belongs_to :user
    belongs_to :exercise
    attr_accessible :writing_date, :exercise_id
end

my db/schema.rb

 ActiveRecord::Schema.define(:version => 20120517142448) do
   create_table "exercises", :force => true do |t|
     t.string   "etitle"
     t.text     "ebody"
     t.decimal  "average",             :precision => 3, :scale => 1
     t.datetime "created_at"
     t.datetime "updated_at"
   end
   create_table "users", :force => true do |t|
     t.string   "email",                                 :default => "",   :null => false
     t.datetime "created_at"
     t.datetime "updated_at"
     t.integer  "user_kind",                             :default => 0
   end
   create_table "writings", :force => true do |t|
     t.integer  "user_id"
     t.integer  "exercise_id"
     t.date     "writing_date"
     t.datetime "created_at"
     t.datetime "updated_at"
   end

the join table is Writing. I try to show on exercise view (app/view/exercises/index.html.erb) for each exercise_id her writing_date. Each user_id has many exercise_id through Writing table. Each record on Writing table has writing_id, user_id, exercise_id and writing_date. In console for specifically exercise_id I made it like this:

1.9.2p290 :001 > @exercise = Exercise.find_by_id(9)
=> #<Exercise id: 9, etitle: "PLS51-2012-E01", ebody: "q", average: #<BigDecimal:53eeba8,'0.1E2',9(18)>, created_at: "2012-05-20 14:31:07", updated_at: "2012-05-20 14:34:27", askisi_file_name: nil, askisi_content_type: nil, askisi_file_size: nil, askisi_updated_at: nil> 
1.9.2p290 :002 > @exercise.writings
=> [#<Writing id: 6, user_id: 1, exercise_id: 9, writing_date: "2012-06-29", created_at: "2012-05-20 14:36:45", updated_at: "2012-05-20 14:36:45">, #<Writing id: 12, user_id: 7, exercise_id: 9, writing_date: "2012-06-20", created_at: "2012-05-20 14:40:12", updated_at: "2012-05-20 14:40:12">, #<Writing id: 13, user_id: 7, exercise_id: 9, writing_date: "2012-05-02", created_at: "2012-05-20 15:41:54", updated_at: "2012-05-20 15:41:54">] 
1.9.2p290 :003 > @exercise.writings.order("writing_date ASC")
=> [#<Writing id: 13, user_id: 7, exercise_id: 9, writing_date: "2012-05-02", created_at: "2012-05-20 15:41:54", updated_at: "2012-05-20 15:41:54">, #<Writing id: 12, user_id: 7, exercise_id: 9, writing_date: "2012-06-20", created_at: "2012-05-20 14:40:12", updated_at: "2012-05-20 14:40:12">, #<Writing id: 6, user_id: 1, exercise_id: 9, writing_date: "2012-06-29", created_at: "2012-05-20 14:36:45", updated_at: "2012-05-20 14:36:45">] 
1.9.2p290 :004 > @exercise.writings.order("writing_date ASC").last
 => #<Writing id: 6, user_id: 1, exercise_id: 9, writing_date: "2012-06-29", created_at: "2012-05-20 14:36:45", updated_at: "2012-05-20 14:36:45"> 

Do I need scope?

Thanks in advance!

1 Answers1

0

Finaly the solution for my problem that can help someone with the same situation is simple. File app/view/exercises/index.html.erb Code:

 <%= exercise.writings.last.try(:writing_date) %>