如何在rails中覆盖HABTM表

时间:2013-07-18 13:36:52

标签: ruby-on-rails-3 activerecord associations has-and-belongs-to-many

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

我想为一个用户发送一些电子邮件到垃圾邮件/垃圾邮件/等。 我如何实现,就好像我删除了一封电子邮件,它将被删除给每个拥有HABTM的用户。 我只想将该电子邮件显示为垃圾邮件/垃圾邮件等。 我想通过在表格中设置垃圾邮件/垃圾桶标志/列来覆盖HABTM表,以便当用户将垃圾邮件/垃圾邮件标记为电子邮件时。他能够工作 有没有办法/惯例呢。

1 个答案:

答案 0 :(得分: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%肯定这会起作用,但我认为它是沿着它们排列的。