Rails 3 after_initialize创建一个帖子

时间:2012-07-07 18:26:58

标签: ruby-on-rails rails-activerecord

我正在尝试在Rails 3中使用after_initialize来自动构建某人的第一篇文章。我已经在模型中设置了默认值,但我希望在创建用户后,它会构建他们的第一个Post。因此,不只是default_values,它们将具有ID为1的Post条目。

型号:

class Etho < ActiveRecord::Base
belongs_to :user
attr_accessible :word_one, :word_two, :word_three, :word_four, :tagline
after_initialize :default_values

private
 def default_values
  self.word_one   ||= "Adventagious"
  self.word_two   ||= "Funny"
  self.word_three ||= "Multidisciplined"
  self.tagline    ||= "Shares the same visions as JFK. Wants to see the world fortune in prosperity."
 end

end

2 个答案:

答案 0 :(得分:0)

想出来。我忘了我可以在控制器内部构建。所以现在我有一个:默认的迁移,然后在用户创建方法我做一个构建。

迁移内部:

add_column :ethos, :tagline, :text, :default => 'Shares a birthday with JFK. Believes in prosperty amongst humans.'

在用户

上的create方法内
ethos = @user.ethos.build

感谢Chris Duesing的帮助!

答案 1 :(得分:0)

  

只需使用回调方法“after_save”

class Etho&lt;的ActiveRecord :: Base的 belongs_to:用户 attr_accessible:word_one,:word_two,:word_three,:word_four,:tagline after_save:default_values

private
 def default_values
  self.word_one   ||= "Adventagious"
  self.word_two   ||= "Funny"
  self.word_three ||= "Multidisciplined"
  self.tagline    ||= "Shares the same visions as JFK. Wants to see the world fortune in prosperity."
 end

end