我有一个简单的应用程序和一个认证系统从设计。我尝试向用户模型中添加角色。但什么都没发生。
我所做的是创建了角色模型并将其链接到用户模型:
$ rails g model Role name:string
$ rails g migration addRoleIdToUser role:references
$ rake db:migrate
(按照设计wiki的指示)
然后在我的模型中:
class User < ActiveRecord::Base
belongs_to :role
end
class Role < ActiveRecord::Base
has_many
我对在PostgreSQL中设置权限感到有点困惑。
我有这样的角色:
List of roles
Role name | Attributes | Member of
-----------+------------------------------------------------+-----------
admin | Superuser, Create role, Create DB, Replication | {}
meltemi
我想在我的rails应用程序中创建一个新页面,您可以在登录后访问该页面。您将看到的只有一个与现有用户一起的下拉列表,以及一个要为该用户指定角色的下拉列表,其中包含一个提交按钮,该按钮将该角色添加到该用户的user_role列中。我这么做是为了
rails g controller add_roles new create
或
rails g scaffold add_roles
如何让它向用户表提交正确的信息?
我使用rails3和acl9进行授权。我正在尝试ARel和rails查询的方式。
我有一个属于公司的用户,用户在公司上有一个给定的角色(acl9提供管道)。如何才能让具有特定角色的给定公司的所有用户?--我想在DB中过滤结果,而不是在应用程序中过滤它们。
我想要这样的东西:
#
# authorizable_id = 1 is the company's id
# 'collaborator' and '1' would be params for my scope
#
select * from users
inner join roles_user
当我尝试启动运行Postgres数据库的Rails应用程序时,我得到了以下错误:
ActiveRecord::NoDatabaseError FATAL: role "Divergent" does not exist
为了解决这个问题,我从psql控制台内部运行了CREATE ROLE Divergent,但它只创建了一个小写的divergent。
那么,我如何创建一个与Postgres数据库期望我拥有的名称的大小写匹配的角色名称(即带有‘D’的分歧者)?为什么Postgres db希望我使用这个名字,我可以更改它吗?
我想为数据库设置特定于应用程序的用户,只是为了审计/调试目的,但是使用根"postgres“用户角色创建表,因为它已经具有适当设置的默认权限(而且在我的例子中,大多数表已经由该用户拥有)。
在运行迁移时,应用程序只需要这个表创建/修改权限,但是如果更容易的话,我可以随时使用它。然而,我还没有找到在Rails中成功使用SET ROLE的任何方法。
我认为添加一个新的rake任务可以在db:migrate任务运行之前设置角色,如下所示:
# in lib/tasks/set_role.rake
namespace :db do
task :set_role do
ActiveR
我有一个新的Rails应用程序,我计划部署在一个码头容器。我们使用的是structure.sql而不是schema.rb。在我的本地设置(使用一个带有Postgres的单独容器中的docker-compose文件)中,当我运行rails db:setup时,我会得到以下错误:
rails aborted!
failed to execute:
psql -q -f /rails/db/structure.sql cappy_dev
Please check the output above for any errors and make sure that `psql` is install