在Rails 3中检查“Admin”组是否在用户组中(使用has_and_belong_to_many关系)的最佳方法是什么?

时间:2012-02-09 22:32:25

标签: ruby-on-rails ruby ruby-on-rails-3 dev-to-production

我只想检查“管理员”组是否在用户组中。用户和组模型具有has_and_belong_to_many关系。

我在开发人员模式下使用rails可以正常运行系统,但是当我尝试传递给生产时,我的“游戏”控制器中的这一行无效:

   if current_user.groups.where(:name => "Admin") != []

ActiveRecord::StatementInvalid (Mysql2::Error: Table 'db_production.groups' doesn't exist: SHOW FIELDS FROM `groups`)

此外,相同的查询在rails控制台中正常工作:

irb(main):001:0> User.find(1).groups.where(:name =>
  User Load (0.2ms)  SELECT `users`.* FROM `users` WHERE `users`.`i
  Group Load (0.4ms)  SELECT `groups`.* FROM `groups` INNER JOIN `groups_users` ON `groups`.`id` = `groups_users`.`group_id` WHERE `groups_users`.`user_id` = 1 AND `groups`.`name` = 'Admin'
=> false

服务器具有Rails 3.2.0并使用Phusion Passenger 3.0.11版与Apache。我使用device gem进行用户管理。

1 个答案:

答案 0 :(得分:0)

从错误消息中清除groups数据库中不存在db_production表。

Mysql2::Error: Table 'db_production.groups doesn't exist

您的迁移可能在生产服务器中失败。