0

我 用戶之間使用導軌3和具有HABTM(has_and_belongs_to_many)<具有 - >電子郵件 而且用戶對用戶的潛艇定義的角色,其中有一個模型酒館的引用了自身進行映射。如何覆蓋在導軌HABTM表

我想發送一些電子郵件垃圾郵件/垃圾郵件/等一個單一的用戶。 我該如何實現,就像我刪除了一封電子郵件一樣,它會被每個擁有HABTM的用戶刪除。 我只是想顯示該電子郵件垃圾/垃圾郵件等 我有一個瘋狂的想法覆蓋HABTM表通過設置表中的垃圾郵件/垃圾標誌/列,以便當用戶標記垃圾郵件/垃圾郵件。他將能夠工作 有沒有任何方式/慣例做到這一點。

回答

1

我覺得你可以逃脫設置你的關聯,如下所示。請注意0​​。當你刪除你的用戶時,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%肯定,這將工作,但我認爲它是沿着他們線。

+0

這意味着,我可以爲該HABTM創建一個模型並使用它.. ?? –

+1

@NishutoshSharma是的,你應該可以。在設計應用程序時,應該考慮到多對多關係不是很好。這就是爲什麼我們可以通過創建解析表來解決這種形式的基數。在這種情況下,這是'UserEmail' – David

+0

我做了一個小小的改變,請檢查並確認目的將被提供..這樣我就可以標記這個答案 –