Ruby on rails 协会 - 用户(设计)在注册和登录后可以“创建团队”或“加入团队”

Posted

技术标签:

【中文标题】Ruby on rails 协会 - 用户(设计)在注册和登录后可以“创建团队”或“加入团队”【英文标题】:Ruby on rails associations - User (devise) can 'create a team' or 'join team' after sign up and log in 【发布时间】:2018-11-22 18:55:10 【问题描述】:

大家好,我正在开发一个 Rails 应用程序,成功注册并登录到他们的仪表板的用户可以创建一个团队并成为领导者(通过电子邮件邀请其他人加入、删除现有成员等)或加入现有的作为成员的团队。(只能查看其他成员和有关他们自己的信息)我正在使用 Devise gem 进行用户登录/注册,因为它有很多我需要的东西。一个团队有一个经理,有很多成员。这是我尝试过的,用户属于团队,团队有很多用户。我也尝试过关联,用户有一个团队,团队有很多用户,但只有一个经理。我很困惑再次感谢。

user.rb

class User < ApplicationRecord
   devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable, :confirmable 
   validates_presence_of :phone, :city, :state, :street, :zip, presence: true, on: :create
      has_one :team     
end

schema.rb

  create_table "teams", force: :cascade do |t|
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "team_name"
    t.string "team_statement"
    t.bigint "user_id"
    t.index ["user_id"], name: "index_teams_on_user_id"
  end

create_table "users", force: :cascade do |t|
    t.string "email", default: "", null: false
    t.string "encrypted_password", default: "", null: false
    t.string "reset_password_token"
    t.datetime "reset_password_sent_at"
    t.datetime "remember_created_at"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.string "confirmation_token"
    t.datetime "confirmed_at"
    t.datetime "confirmation_sent_at"
    t.string "firstname"
    t.string "middlename"
    t.string "lastname"
    t.string "phone"
    t.string "city"
    t.string "state"
    t.string "street"
    t.string "zip"
    t.index ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true
    t.index ["email"], name: "index_users_on_email", unique: true
    t.index ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
end

team.rb

class Team < ApplicationRecord
  belongs_to :user, class_name: 'User'  
end

routes.rb

   devise_for :users, path: 'users' , controllers:  sessions: "users/sessions", confirmations: 'users/confirmations', registrations: 'users/registrations'  

【问题讨论】:

没有一个问题。你解决了什么问题? 我的问题是处理这种情况的最佳方法是什么,我提供了上面的代码来展示我尝试过的内容。我已经描述了我的问题是什么。 @Neodelf 这取决于你有什么屏幕。它可以是注册页面上的表单(用户可以立即选择他或她想要的东西 - 成为团队的领导者或创建新团队)或成功登录/注册过程后的页面。 @Neodelf 感谢您的快速回复,用户可以选择是想创建一个新团队并成为领导者,还是注册并登录后加入现有团队 只是你应该创建一个新页面(路由、控制器、视图和操作)并创建表单。你试过了吗? 【参考方案1】:

您只需将整数字段leader_id 添加到teams 表中。另外,您应该将此行添加到team.rb

belongs_to :leader, class_name: 'User'

这可以帮助您从团队中找到领导者(例如 team.leader)。 你不应该使用has_and_belongs_to_many 关联。

【讨论】:

太棒了,这目前正在工作,但是我将如何将更多用户添加到团队中作为成员? 只需在users 表上使用添加的字段team_id。例如:您有记录:User id: 1, team_id: 1, ... ; Team id: 1, leader_id: 1. 与他们一起你可以使用team.users, team.leaderuser.team 方法 Bare with me 我已经更新了上面的代码,我还是做错了什么吗? @Neodelf 添加上面的代码和上面注释中的方法就可以了 我已经更新了我上面原始问题中的代码,我还是做错了什么吗? @Neodelf

以上是关于Ruby on rails 协会 - 用户(设计)在注册和登录后可以“创建团队”或“加入团队”的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails用户和密码验证

Ruby on Rails 用户和密码验证

如何在 Ruby on Rails 中链接个人资料页面

如何将 paypal 与 ruby​​ on rails 应用程序集成?

Ruby on Rails:如何配置设计邮件程序?

Ruby on Rails SOA 设计资源和示例