如何在Rails中创建关联的模型实例

时间:2014-02-25 12:28:54

标签: ruby-on-rails ruby-on-rails-4 devise

My Rails 4应用程序具有由Devise GEM生成的用户模型。它还与Profile模型相关联。

以下是型号:

class User < ActiveRecord::Base
  has_one :profile
end

class Profile < ActiveRecord::Base
  belongs_to :user
end

和DB架构:

create_table "profiles", force: true do |t|
    t.string   "registered_city"
    t.integer  "user_id"
    ....
end

add_index "profiles", ["user_id"], name: "index_profiles_on_user_id"

create_table "users", force: true do |t|
  t.string   "email",                  default: "", null: false
  t.string   "encrypted_password",     default: "", null: false
  ....
end

add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true

我想为每个/每个用户注册网站时创建关联的个人资料模型实例。

例如,如果用户完全注册该站点,则应自动创建属于该用户的Profile模型,并且必须与相关用户关联。另外,我需要在Profile模型中填写“registerd_city”字段,默认为“London”。

我该怎么做?

1 个答案:

答案 0 :(得分:0)

class User

  has_one :profile
  after_create :make_profile

  def make_profile
    create_profile(:registered_city => "London")
  end

end

喜欢这个。