2012-05-20 67 views
0

那麼我的模型是用戶,運動和寫作。has_many通過sql

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 

我的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 

連接表是寫作。我試着在練習視圖(app/view/exercises/index.html.erb)上顯示每個exercise_id她的writing_date。每個user_id都有許多通過Writing表的exercise_id。 Writing表上的每個記錄都有writing_id,user_id,exercise_id和writing_date。在具體的exercise_id控制檯,我這樣做是這樣的:

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"> 

我是否需要範圍?

在此先感謝!

回答

0

最終我的問題的解決方案可以幫助有相同情況的人很簡單。文件應用/查看/練習/ index.html.erb 代碼:

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