填充第三个模型,使用用户模型上的 after_create 回调从不同模型中提取数据

Populate a thrid model, pulling data from different model with an after_create callback on User model

我有 3 个模型,用户、member_role 和成员。我需要在用户模型上使用 after_create 回调并填充从 member_role 模型获取角色的成员模型。

对于如何实现这一点的任何帮助,我将不胜感激。

我的Member_role模特很喜欢

1 - admin 2 - teacher 3- student 4 - so on

和mr member Model长得像

member_id user_id member_role_id

需要在用户模型上使用 after_create 回调填充成员模型。

这是我的 Schema.rb

ActiveRecord::Schema.define(version: 20150930061155) do

  create_table "member_roles", force: :cascade do |t|
    t.string   "role",       limit: 255
    t.datetime "created_at",             null: false
    t.datetime "updated_at",             null: false
  end

  create_table "members", force: :cascade do |t|
    t.datetime "created_at",               null: false
    t.datetime "updated_at",               null: false
    t.integer  "user_id",        limit: 4
    t.integer  "member_role_id", limit: 4
  end

  create_table "users", force: :cascade do |t|
    t.string   "provider",               limit: 255,   default: "email", null: false
    t.string   "uid",                    limit: 255,   default: "",      null: false
    t.string   "encrypted_password",     limit: 255,   default: "",      null: false
    t.string   "reset_password_token",   limit: 255
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.integer  "sign_in_count",          limit: 4,     default: 0,       null: false
    t.datetime "current_sign_in_at"
    t.datetime "last_sign_in_at"
    t.string   "current_sign_in_ip",     limit: 255
    t.string   "last_sign_in_ip",        limit: 255
    t.string   "confirmation_token",     limit: 255
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
    t.string   "unconfirmed_email",      limit: 255
    t.string   "name",                   limit: 255
    t.string   "nickname",               limit: 255
    t.string   "image",                  limit: 255
    t.string   "email",                  limit: 255
    t.text     "tokens",                 limit: 65535
    t.datetime "created_at"
    t.datetime "updated_at"
  end

  add_index "users", ["email"], name: "index_users_on_email", using: :btree
  add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
  add_index "users", ["uid", "provider"], name: "index_users_on_uid_and_provider", unique: true, using: :btree

end

假设默认MemberRole是第一个:

class User
  after_create :assign_member_role

  private
  def assign_member_role
    mr = MemberRole.first # default MR
    Member.create!(user_id: self.id, member_role_id: mr.id)
  end
end