填充第三个模型,使用用户模型上的 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
我有 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