总结一下: 首先感谢各位的帮助。 删除关联关系用户需要一般情况两种选择 1 逻辑删除,2 删除依赖 我在 model 定义了关联关系
has_many :product, dependent: :restrict_with_error
整理了一下关联的选项 :as :autosave :class_name :dependent :foreign_key :inverse_of :primary_key :source :source_type :through :validate 1、as:指明为多态关联 2、autosave:若设为 true,当 owner 实体做出某一操作时会自动保存或删除其关联实体的相应操作。 3、class_name:关联的实体名不能找到对应的实体,通过该属性设置实际的实体。 4、dependent:当 owner 实体被摧毁时,关联实体的行为: destroy:所有关联实体被摧毁 delete_all:所有关联实体被直接从数据库删除,不可恢复 nullify:外键被设为 null,不可恢复 restrict_with_exception:抛出异常提示 restrict_with_error:抛出错误提示 5、foreign_key:定义外键的列名 6、inverse_of:指明反向关联的实体 7、primary_key:指明关联项的 id 8、through:指明多对多的关系使用的第三方实体 9、validate:如果设为 false,关联关系将会无效。 希望可帮到遇到同样问题的萌新
解决问题了,感谢你的帮助,thanks
谢谢您的回复,我这样写的
class AdminUser < ApplicationRecord
has_many :admin_users, dependent: :destroy
end
报错变成 PG::UndefinedColumn - ERROR: column admin_users.admin_user_id does not exist LINE 1: SELECT "admin_users".* FROM "admin_users" WHERE "admin_users... admin_user_id 是 Product 表里引用 admin_users 表外键关联
非常感谢你的回复,请问 has_many :books, dependent: :destroy 这个语句在 model 里写吗?
萌新不易,这个问题卡了好几天,各位大佬要是知道就评论吧,Thanks
谢谢你的评论,我想做一下关联删除,可我找不到在哪里做,这个用的 ActiveAdmin
逻辑删除也是个办法,可我找不到 ActiveAdmin 的 Controller 也找不到 CURD 处理的地方,这个项目用的 ActiveAdmin 的 gem 源,只有 model 和 app 下面的 admin 有 adminUser 其他没有,不知道从哪里入手 :期待大佬回复