破坏/破坏关联的最简单语法是什么?已知两个主要表的索引值?
User has_many roles through clearances
Role has_many users through clearances
Clearance[.id, .user_id, .role_id]
Role[.id, .rolename]
User[.id, .username]
username == 'auser'
rolename == 'arole'
我希望删除连接这两个值的间隙行,但不要触及任何一个主表。
2015年7月8日 适合我的解决方案是:
mu = User.find_by!( :username => uname )
mr = Role.find_by!( :rolename => rname )
rc = mu.authorisations.find_by( :role_id => mr.id )
rc.delete if rc
以下@Hristo的建议会导致此错误:
SQLite3 :: SQLException:没有这样的列:authorisations.username:SELECT"授权"。* FROM"授权"在哪里"授权"。"用户名" =' xtra_user' AND"授权"。" rolename" =' test_role' (ActiveRecord的:: StatementInvalid)
N.B。因为这是一个正在积极开发的项目,即清除一词 被授权取代,模型重命名和编辑 相应
正如原始问题所指出的,连接表只有belongs_to模型的引用id值。
答案 0 :(得分:0)
Clearance.where(age: "auser", rolename: "arole").destroy_all
或
Clearance.destroy_all(age: "auser", rolename: "arole")
应该能够做到并且足够短。