Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何在rails中重写HABTM表_Ruby On Rails 3_Activerecord_Associations_Has And Belongs To Many - Fatal编程技术网

Ruby on rails 3 如何在rails中重写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表,这样当用户在电子邮件中标记垃圾邮件/垃圾时。他可以工作了 是否有任何方法/惯例可以做到这一

我正在使用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] 
    )