0

「管理者」グループがユーザーグループに含まれているかどうかを確認したいだけです。ユーザーとグループのモデルには has_and_belong_to_many の関係があります。

開発者モードでレールを使用してシステムを正常に動作させましたが、本番環境に移行しようとすると、「ゲーム」コントローラーの次の行が機能しませんでした:

   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 を使用しています。

4

1 に答える 1

0

groupsテーブルがデータベースに存在しないというエラー メッセージをクリアしdb_productionます。

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

おそらく、本番サーバーで移行が失敗した可能性があります。

于 2012-02-10T08:24:56.933 に答える