Thanks Nicholas. Le lundi 22 juin 2015 13:25:49 UTC-7, Nicholas Shook a écrit : > > After reading this after your other post (should've done the other way > around). I think this looks fine. if a role is always tethered to an agenda > you probably don't need the > t.belongs_to :user > > in your migration. > > #3 could be the creation of a new role > #4 can be some column/logic on the agenda for authorization > #5 should hopefully just be agenda.users > #6 likewise should hopefully just be user.agendas. > > On Sunday, June 21, 2015 at 10:36:18 PM UTC-7, Thibaud Clément wrote: >> >> Hi SD Ruby, >> >> I used to live in San Diego and be part of the community: I recently >> relocated to LA but thought you may allow that I consult with you about an >> issue I am facing. >> >> Since I asked the question on Stack Overflow, I will share the link here >> so we can reference to the great answer that was given there: >> http://goo.gl/gbXLtg >> >> Basically, the app I would like to build allows users to: >> >> 1. Create agendas. >> 2. Share agendas with other users. >> 3. Assign roles (and permissions) to users when they share an agenda >> with them: for instance owner, editor, viewer. >> 4. Decide whether they want each agenda to have zero, one or several >> owner(s), editor(s) or viewer(s). >> 5. See, on each agenda page, a list of all the users belonging to the >> given agenda. >> 6. See, on their profile, a list of the agendas that belong to them, >> with the associated role they have for each. >> >> After two days of thinking and research, here is what I consider doing: >> >> - Models >> >> class User < ActiveRecord::Base >> has_many :roles >> has_many :agendas, through: :roles >> end >> >> class Role < ActiveRecord::Base >> belongs_to :user >> belongs_to :agenda >> end >> >> class Agenda < ActiveRecord::Base >> has_many :roles >> has_many :users, through: :roles >> end >> >> - Migration >> >> class CreateRoles < ActiveRecord::Migration >> def change >> create_table :roles do |t| >> t.belongs_to :user, index: true >> t.belongs_to :agenda, index: true >> t.string :privilege >> t.timestamps >> end >> end >> end >> >> I believe this would let users do #1 and #2. >> >> But, would this allow to do the following: >> >> - #3 (assign roles) thanks to the Role model and its privilege column? >> - #4 (decide on the go which users, with which roles, can access each >> agenda) by adding a new line in the Role table? >> - #5 (display list of users for a given agenda) with >> @agenda.user.role.privilege.index (not sure about the syntax here)? >> - #6 (display list of agendas for a given user) with >> @user.agenda.role.privilege.index (ditto, not sure about the syntax here)? >> >> Thank you very much for your help. >> >> Thibaud >> >
-- -- SD Ruby mailing list [email protected] http://groups.google.com/group/sdruby --- You received this message because you are subscribed to the Google Groups "SD Ruby" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
