Hello,
I''ve worked through some rails tutorials and am trying to create
something a little more complicated for learning purposes. I''m trying
to extend a blog application into more of a cms with a basic user/
group permission system.
Basically, I have Users, Articles and Groups. Users can have a role
of either: Author or Viewer. Some articles are private and some are
public. For private articles, I''d like to have a system where an
article can be permissioned to either a group or to an individual user
or even both.
When a website visitor tries to access an article AND the article is
''Private'', I''d like for the system to prompt the
visitor to login.
Once logged in, I want the system to then check if this user has
permission to view the article. Permission being defined as: if this
user is either in a group that has permission to the article OR the
user himself has explicit permission to that article.
Here''s what I currently have - does this make sense? I''m
mostly
struggling with the Article_Private_Access model and whether this is a
good approach.
Users:
name
email
password
role (role is either ''Author'' or
''Viewer'')
Group_Users
group_id
user_id
Groups:
name
Articles
user_id
access_type (''Private'' or ''Public'')
title
body
Article_Private_Access (** this serves to link Articles with
permissioned Users or Groups)
article_id
access_type (''Group'' or ''User'')
access_id (this id would point to either a User record, or a
Group record)
*****
User model:
has_and_belongs_to_many :groups
has_many :article
Group model:
has_and_belongs_to_many :users
Article model:
belongs_to :user
I''m just not sure whether to use the Article_Private_Access table and/
or how to model it. I was thinking this table would contain a list of
Users and/or Groups that had access to a particular Article. But I''m
a bit lost now....
Any help would be greatly appreciated.
Thanks.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
The tables you have seem to make sense to me. For the Article Private Access table appears to be a one to one on Article, you could dispense with this table and put the fields into the Articles table. Either as you have them, access_type, access_id. Or access_id, group_id. With the latter, an article could be accessible by a group or a user or both. If you only want Access by group OR user, then another approach might be to use two different article tables, eg. Group_Article and User_Article. I am doing something similar at the moment, where I have bookings that can belong to an Order or a Quote. I am still thinking about it, but it looks to me like having order_bookings and quote_bookings may possibly be a cleaner solution. In your case however, that is probably not the case. Others may have better ideas. HTH tonypm --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
thanks for the response. as for breaking articles into 2 tables, i prefer to keep a single table. i think in your case 2 tables would be better. also, i''m not sure how there would be a 1-1 relationship between my article_private_access table with articles. here''s how i envision the data Users id name 1 Jim 2 John 3 Mary 4 Ed 5 Fred Articles id title user_id access_type 1 Some article title 1 PRIVATE Groups id name 1 Group1 Groups_Users group_id user_id 1 2 1 4 Article_Private_Access article_id access_type access_id 1 Group 1 1 User 3 This would allow "Article 1" (published by Jim) to be accessible by: Group1 (which contains John, Ed) and accessible by user Mary. Fred would not be entitled to access this article Is there an easier way? I feel as though I may have a lot of logic to loop through these Article_Private_Access lists that I''d like to simplify. On May 1, 1:55 am, tonypm <tonypmar...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:> The tables you have seem to make sense to me. > > For the Article Private Access table appears to be a one to one on > Article, you could dispense with this table and put the fields into > the Articles table. Either as you have them, access_type, access_id. > Or access_id, group_id. With the latter, an article could be > accessible by a group or a user or both. > > If you only want Access by group OR user, then another approach might > be to use two different article tables, > eg. Group_Article and User_Article. I am doing something similar at > the moment, where I have bookings that can belong to an Order or a > Quote. I am still thinking about it, but it looks to me like having > order_bookings and quote_bookings may possibly be a cleaner solution. > In your case however, that is probably not the case. > > Others may have better ideas. HTH > tonypm--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
thanks for the response. as for breaking articles into 2 tables, i prefer to keep a single table. i think in your case 2 tables would be better. also, i''m not sure how there would be a 1-1 relationship between my article_private_access table with articles. here''s how i envision the data Users id name 1 Jim 2 John 3 Mary 4 Ed 5 Fred Articles id title user_id access_type 1 Some article title 1 PRIVATE Groups id name 1 Group1 Groups_Users group_id user_id 1 2 1 4 Article_Private_Access article_id access_type access_id 1 Group 1 1 User 3 This would allow "Article 1" (published by Jim) to be accessible by: Group1 (which contains John, Ed) and accessible by user Mary. Fred would not be entitled to access this article Is there an easier way? I feel as though I may have a lot of logic to loop through these Article_Private_Access lists that I''d like to simplify. On May 1, 1:55 am, tonypm <tonypmar...-PkbjNfxxIARBDgjK7y7TUQ@public.gmane.org> wrote:> The tables you have seem to make sense to me. > > For the Article Private Access table appears to be a one to one on > Article, you could dispense with this table and put the fields into > the Articles table. Either as you have them, access_type, access_id. > Or access_id, group_id. With the latter, an article could be > accessible by a group or a user or both. > > If you only want Access by group OR user, then another approach might > be to use two different article tables, > eg. Group_Article and User_Article. I am doing something similar at > the moment, where I have bookings that can belong to an Order or a > Quote. I am still thinking about it, but it looks to me like having > order_bookings and quote_bookings may possibly be a cleaner solution. > In your case however, that is probably not the case. > > Others may have better ideas. HTH > tonypm--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---