2012-03-04 48 views
0

的時間來創建相關的行我有兩個表:借鑑與網頁什麼是「Rails的路」在另一排在Ruby中創建on Rails的

  • 教訓「的has_many」頁面
  • 頁「belongs_to」課程

當創建新課程時,我想要同時創建第一個頁面。 第一頁將有:

  • 的lesson_id列等於新創建的教訓ID
  • 標題欄等於新創建的教訓標題
+0

在你的'Lesson'模型中使用'after_create'過濾器 – apneadiving 2012-03-04 23:17:13

+0

你可以舉一個after_create的例子嗎? – 2012-03-04 23:23:15

回答

1

像這樣的事情會做的伎倆:

class Lesson < ActiveRecord::Base 
    has_many :pages 
    before_create :create_first_page 

    def create_first_page 
    if pages.empty? 
     pages.build(:title => title) 
    end 
    end 
end 
+0

爲什麼使用before_create而不是after_create? – 2012-03-04 23:48:13

+0

在這種情況下這不是什麼大問題; 'after_create'也可以做。我喜歡有機會早點放棄,也可以在這裏修改課程的屬性(例如計數器緩存)等,但在您的用例中它非常相似。 請注意,如果您使用'after_create',您將需要調用'pages.create'而不是'pages.build':前者將保存新頁面,但後者不會(因爲它將在ActiveRecord保存課程)。 – 2012-03-04 23:57:32