0

我正在使用 rails 3 并且在用户 <-> 电子邮件之间有一个 HABTM(has_and_belongs_to_many) 用户还为用户定义了角色作为 subs,pubs 有一个引用自身进行映射的模型。

我想为一个用户发送一些电子邮件到垃圾邮件/垃圾邮件/等。我该如何实现,就像我删除一封电子邮件一样,每个拥有 HABTM 的用户都会将其删除。我只是想将该电子邮件显示为已删除/垃圾邮件等。我有一个疯狂的想法,即通过在表中设置垃圾邮件/垃圾标志/列来覆盖 HABTM 表,以便当用户将垃圾邮件/垃圾标记为电子邮件时。他将能够工作 有什么方法/惯例可以做到这一点。

4

1 回答 1

1

我认为您可以通过如下所示的方式设置关联。注意dependent: :destroy. 当您删除您的用户时,ActiveRecord 将导致dependent: :destroy对模型的调用并删除与之关联的模型。

class User < ActiveRecord::Base 
  has_many :emails, through: :user_emails
  has_many :emails, dependent: destroy 
end 

class UserEmail < ActiveRecord::Base
  belongs_to :user 
  belongs_to :email 
end 


class Email < ActiveRecord::Base 
  has_many :users, :through: :user_emails 
  has_many :user_emails, :dependent: :destroy 
end 

您可以在Polymorphic Associations下查看。希望这会有所帮助

更新查询has_many关联

 @UserEmail = UserEmail.find(:all,
    :joins => :user, :email,
    :conditions => ["email.email_trashed = ? ", true] 
    )

不是 100% 确定这会奏效,但我认为这符合他们的要求。

于 2013-07-18T13:53:17.780 回答