1

ユーザーにロールを割り当てるときに、roles_users のテーブルの created_at 列がユーザーを 1 にしているように見える理由を理解しようとしています。独自の作成日を持つべきではありませんか? 何か役に立ちますか?

ruby-1.8.7-p174 > Time.now
=> Thu Feb 24 15:50:11 +0100 2011
ruby​​-1.8.7-p174 > User.last.has_role! "installer"
User Load (0.5ms) SELECT * FROM "users" ORDER BY users.id DESC LIMIT 1
Country Load (0.2ms) SELECT * FROM "countries" WHERE ("countries"."id" = 106)
Role Load ( 0.2ms) SELECT * FROM "roles" WHERE (name = 'installer' and authorizable_type IS NULL and authorizable_id IS NULL) LIMIT 1
Role Load (0.1ms) SELECT "roles".id FROM "roles" INNER JOIN "roles_users" ON " roles".id = "roles_users".role_id WHERE ("roles"."id" = 2) AND ("roles_users".user_id = 31) LIMIT 1
SQL (0.', ' 2010-09-16 14:11:24 ', 2, 31)
ロールのロード (0.5ms) SELECT * FROM "roles" INNER JOIN "roles_users" ON "roles".id = "roles_users".role_id WHERE ( "roles_users".user_id = 31 )
=> [#Role id: 2, name: "installer", authorizable_type: nil, authorizable_id: nil, created_at: "2010-09-16 14:11:24", updated_at: "2010 -09-16 14:11:24">]
ruby​​-1.8.7-p174 > Role.find_by_name("installer")
Role Load (0.3ms) SELECT * FROM "roles" WHERE ("roles"."name" = 'installer') LIMIT 1
=> #Role id: 2, name: "installer", authorizable_type: nil, authorizable_id: nil, created_at: " 2010-09-16 14:11:24 "、updated_at: "2010-09-16 14:11:24">

4

2 に答える 2

1

acl9 で使用される habtm 結合テーブルには、追加の属性がない場合があります。

結合テーブルに created_at または updated_at 属性がある場合 ActiveRecord は、この値に関連するテーブルの値 (あなたの場合は Role) を入力します。

この機能が必要な場合は、gem を編集し、リレーションに :after_add コールバック フィルターを追加する必要があります。このファイルの行 41 を見てください。

また、結合データベーステーブルの行が作成および削除され、更新されていないため、updated_at は役に立ちません...

これが役に立てば幸いです。私の英語で申し訳ありません。

于 2011-06-28T11:02:12.277 に答える