Good afternoon, I have the following models:
User.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
VALID_USERNAME_REGEX = /\A[a-zA-Z0-9]*[_|-|.]*[a-zA-Z0-9]*\z/
VALID_EMAIL_REGEX = /\A([\w+\-].?)+@[a-z\d\-]+(\.[a-z]+)*\.[a-z]+\z/i
validates :name, presence: true
validates :username, presence: true,
format: {with: VALID_USERNAME_REGEX,
message: "Somente letras, numeros e simbolos (. _ -)"}
validates :email, presence: true,
format: {with: VALID_EMAIL_REGEX}
has_many :projects
has_many :users_projects
has_many :roles
has_many :roles, through: :project
has_many :shared_projects, through: :users_projects, source: :project
end
Project.rb
class Project < ApplicationRecord
belongs_to :user
belongs_to :role
has_many :users_projects
has_many :collaborators, through: :users_projects, source: :user
has_many :boards
validates :name, presence: true
#validates :user_id, presence: true
end
Role.rb
class Role < ApplicationRecord
has_many :projects
has_many :users, through: :projects
end
The user can have 3 different roles, Product Manager , Scrum Master and Developer . The problem is that, the role of a user depends on the project to which he is involved, the same user can be Product Manager in one, and another can be Developer for example. Thus, the role of a user is more connected to a project than to the user. My question is, what is the best way to put this together? The way I did it, when I go popular my bank, I get an error saying that Role is required. Could someone give me a hand?