2012-03-04 78 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