Ruby on rails 3 如何在rails中重写HABTM表
我正在使用rails 3,并且有一个HABTM(has_和_属于_-many) 用户电子邮件 此外,用户还将角色定义为sub,pub有一个引用自身进行映射的模型 我想为一个用户发送一些电子邮件到垃圾箱/垃圾邮件/等。 我如何才能做到,就好像我删除了一封电子邮件,它将被删除的每一个用户HABTM。 我只想把那封邮件显示为垃圾邮件等。 我有一个疯狂的想法,通过在表中设置垃圾邮件/垃圾标志/列来覆盖HABTM表,这样当用户在电子邮件中标记垃圾邮件/垃圾时。他可以工作了Ruby on rails 3 如何在rails中重写HABTM表,ruby-on-rails-3,activerecord,associations,has-and-belongs-to-many,Ruby On Rails 3,Activerecord,Associations,Has And Belongs To Many,我正在使用rails 3,并且有一个HABTM(has_和_属于_-many) 用户电子邮件 此外,用户还将角色定义为sub,pub有一个引用自身进行映射的模型 我想为一个用户发送一些电子邮件到垃圾箱/垃圾邮件/等。 我如何才能做到,就好像我删除了一封电子邮件,它将被删除的每一个用户HABTM。 我只想把那封邮件显示为垃圾邮件等。 我有一个疯狂的想法,通过在表中设置垃圾邮件/垃圾标志/列来覆盖HABTM表,这样当用户在电子邮件中标记垃圾邮件/垃圾时。他可以工作了 是否有任何方法/惯例可以做到这一
是否有任何方法/惯例可以做到这一点。我认为您可以通过如下所示的方式建立您的关联。请注意
依赖::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
不是100%确定这会起作用,但我认为这是可行的。这意味着,我可以为HABTM创建一个模型,并使用它….@NishutoshSharma是的,你应该能够。在设计应用程序时,应该考虑多对多关系不是很好。这就是为什么我们可以通过创建解析表来解析这种形式的基数。在这种情况下,这是
UserEmail
我做了一个小小的更改,请检查并确认该用途将得到满足。。因此,我可以正确地标记这个答案我看过你的编辑,听起来很合理,如果你将字段,spam
和trash
设置为布尔字段,那么确定字段是否已标记将阻止电子邮件发生什么情况,:trashed in:emails\u users表那么我如何找到垃圾电子邮件=>true。。我发现很难通过EmailsUser模型的列进行搜索。我们是否有任何标准的方式通过表格查询此信息??
@UserEmail = UserEmail.find(:all,
:joins => :user, :email,
:conditions => ["email.email_trashed = ? ", true]
)