首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >已审计:具有HABTM关系的相关审计

已审计:具有HABTM关系的相关审计
EN

Stack Overflow用户
提问于 2018-06-19 11:45:44
回答 2查看 800关注 0票数 1

我有模特userrole

代码语言:javascript
复制
class User < ApplicationRecord
  rolify strict: true

  has_many :roles, through: :users_roles
  has_associated_audits


class Role < ApplicationRecord
  has_and_belongs_to_many :users, join_table: :users_roles
  audited associated_with: :users, join_table: :users_roles

当我创建一个新角色时,我得到了一个错误:

代码语言:javascript
复制
2.4.4 :373 >   User.first.add_role Role.pi, ProjectRequest.find(319)
  User Load (0.7ms)  SELECT  `users`.* FROM `users` ORDER BY `users`.`id` ASC LIMIT 1
  ProjectRequest Load (0.6ms)  SELECT  `project_requests`.* FROM `project_requests` WHERE `project_requests`.`id` = 319 LIMIT 1
  Role Load (0.6ms)  SELECT  `roles`.* FROM `roles` WHERE `roles`.`name` = 'pi' AND `roles`.`resource_type` = 'ProjectRequest' AND `roles`.`resource_id` = 319 ORDER BY `roles`.`id` ASC LIMIT 1
   (0.2ms)  BEGIN
  SQL (0.6ms)  INSERT INTO `roles` (`name`, `resource_type`, `resource_id`, `created_at`, `updated_at`) VALUES ('pi', 'ProjectRequest', 319, '2018-06-19 11:40:13', '2018-06-19 11:40:13')
   (54.3ms)  ROLLBACK
NoMethodError: undefined method `primary_key' for User::ActiveRecord_Associations_CollectknowProxy:Class

我现在没什么问题了,是不是我说错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-21 06:32:50

我已经通过本教程解决了这个问题:http://blog.flatironschool.com/why-you-dont-need-has-and-belongs-to-many/

我所做的是删除HABTM关系并为连接表创建模型。

代码语言:javascript
复制
class User < ApplicationRecord
  rolify strict: true
  has_many :users_roles
  has_many :roles, through: :users_roles, dependent: :destroy
  has_associated_audits


class Role < ApplicationRecord
  has_many :users_roles
  has_many :users, through: :users_roles, dependent: :destroy
  audited associated_with: :users

class UsersRole < ApplicationRecord
  # audited associated_with: :role
  audited associated_with: :user

  belongs_to :user
  belongs_to :role
end

现在,当在UsersRole实例中使用更改创建审计时。问题是,更改只包含被破坏列的ids,所以您无法理解它是什么。这个问题在这里得到了部分解决:https://github.com/collectiveidea/audited/issues/72#issuecomment-398756380

票数 1
EN

Stack Overflow用户

发布于 2018-06-19 14:56:41

如果关联是has_and_belongs_to_many :users,而在roles表中的join_table是users_roles,那么关联就会出现问题,而且还应该是has_and_belongs_to_many :roles,join_table::users_roles,这将形成HABM关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50927649

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档