Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Conseil sur les associations ActiveRecord #5

Open
dalawwa opened this issue Jul 1, 2014 · 0 comments
Open

Conseil sur les associations ActiveRecord #5

dalawwa opened this issue Jul 1, 2014 · 0 comments

Comments

@dalawwa
Copy link

dalawwa commented Jul 1, 2014

Salut tout le monde,

Pour mon projet d'app adopt a noob, qui a vocation à mettre en relation des mentors et des apprentis autour d'un projet commun, il est important que j'associe correctement mes modèles mais je ne suis pas certain que mon approche corresponde à ce que je souhaite. Je voudrais qu'un user puisse accéder à un projet créé par un autre user. Ensuite, un user pourrait s'associer à chaque projet en déclarant être mentor ou apprenti. Ce même user pourrait donc changer de rôle selon le projet auquel il participe.
J'avais pensé à une association many to many

    class User < ActiveRecord::Base
      has_many :roles
      has_many :projects, through: :roles
    end
    class Project < ActiveRecord::Base
      has_many :users, through: :roles
      has_many :roles
    end
    class Role < ActiveRecord::Base
      belongs_to :user
      belongs_to :project
    end

Dans le tableau roles, il y aurait les colonnes id, updated_at, created_at, project_id, user_id, (et je pensais à un booleén du type) "apprentis?" .

  • Corrigez-moi si je me trompe, mais si j'avais employé une association du type has_and_belongs_to_many (habtm) entre User et Project, chaque user aurait son rôle figé pour tous les projets auxquels il participe?
  • Concernant "apprentis?", j'imagine qu'il va me falloir définir une fonction "apprentis?". Là, il y a deux scénarios :
  1. je créée la fonction dans le model ou pour être plus propre dans un module dans app/models/concerns/current_role.rb ce qui à mon avis ressemblerait à qqc comme ça.
    module CurrentRole
      extend ActiveSupport::Concern
      private
        def apprentis?
            # là faut que je réfléchisse encore, d'ailleurs si vous avez des idées :)
            true
          else
            false
          end
        end
  1. dans le cas où je souhaite que cette fonction soit accessible par mes views et controllers, est-ce que c'est là qu'il est intéressant de faire des services (synonyme de Service Object?)?

Yeah, j'ai presque fini! Poser des questions sur github ou stackoverflow est un art difficile à maitriser, j'espère avoir été assez précis sans être ennuyeux.
Merci

cveneziani pushed a commit that referenced this issue Aug 31, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant