gla*_*kou 7 ruby activerecord ruby-on-rails
有人可以帮我纠正我的联想吗?
我有以下型号:
User, Developer, Application, Comments, Rating, Permission
Run Code Online (Sandbox Code Playgroud)
要求:
A user can be a Developer or not.
A user can have Default Permissions and Permissions for each application
A user can install multiple Applications
A user can comment and rate multiple Applications
A developer can develop multiple applications
An application can request a list of permissions.
Run Code Online (Sandbox Code Playgroud)
我已经创建了一些关联,但我相信它不是100%正确或更简单的方法存在.
有人可以建议我一个正确的方法吗?
Mse*_*enb 14
您在授权时会混淆模型.
您应该查看CanCan以获得基于角色的授权.例如,您不需要开发人员模型,因为它只是具有不同角色/权限的用户.
编辑:将"基于角色的身份验证"更改为"基于角色的授权".正如下面的评论指出了身份验证和授权之间的区别.
我认为这就是你想要的模型工作.您可以使用连接模型来管理应用程序权限,并使用Rails STI来管理每种类型的用户可以执行的操作,无论是否正在开发.
user.rb
class User < ActiveRecord::Base
has_many :apps
has_many :comments, :through => :user_comments
has_many :ratings, :through => :user_ratings
end
Run Code Online (Sandbox Code Playgroud)
comment.rb
class Comment < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
rating.rb
class Rating < ActiveRecord::Base
belongs_to :user
end
Run Code Online (Sandbox Code Playgroud)
user_comment.rb
class UserComment < ActiveRecord::Base
belongs_to :app
end
Run Code Online (Sandbox Code Playgroud)
user_rating.rb
class UserRating < ActiveRecord::Base
belongs_to :app
end
Run Code Online (Sandbox Code Playgroud)
normal_user.rb(STI)
class NormalUser < User
end
Run Code Online (Sandbox Code Playgroud)
developer.rb(STI)
class Developer < User
end
Run Code Online (Sandbox Code Playgroud)
app.rb
class App < ActiveRecord::Base
has_many :permissions, :through => :app_permissions
has_many :user_comments
has_many :user_ratings
end
Run Code Online (Sandbox Code Playgroud)
permission.rb
class Permission < ActiveRecord::Base
belongs_to :app
end
Run Code Online (Sandbox Code Playgroud)
app_permission.rb
class AppPermission < ActiveRecord::Base
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
367 次 |
| 最近记录: |