无法绕过这个......
class User < ActiveRecord::Base
has_many :fantasies, :through => :fantasizings
has_many :fantasizings, :dependent => :destroy
end
class Fantasy < ActiveRecord::Base
has_many :users, :through => :fantasizings
has_many :fantasizings, :dependent => :destroy
end
class Fantasizing < ActiveRecord::Base
belongs_to :user
belongs_to :fantasy
end
...这对我的主要关系很好,因为User
很多Fantasies
,而Fantasy
1}}可以 属于 到许多Users
。
但是,我需要为 liking 添加另一种关系(例如,User
“赞”a Fantasy
而不是“ “它...想想Facebook以及你如何”喜欢“一个墙贴,即使它不属于你......事实上,Facebook的例子几乎就是我的目标)
我认为我应该建立另一种关联,但我对如何使用它或者如果这是正确的方法感到困惑。我开始添加以下内容:
class Fantasy < ActiveRecord::Base
...
has_many :users, :through => :approvals
has_many :approvals, :dependent => :destroy
end
class User < ActiveRecord::Base
...
has_many :fantasies, :through => :approvals
has_many :approvals, :dependent => :destroy
end
class Approval < ActiveRecord::Base
belongs_to :user
belongs_to :fantasy
end
...但如何通过Approval
而不是Fantasizing
创建关联?
如果有人能让我直截了当,我会非常感激!
答案 0 :(得分:2)
保留第一组代码,然后在用户模型中添加:
has_many :approved_fantasies, :through => :fantasizings, :source => :fantasy, :conditions => "fantasizings.is_approved = 1"
在Fantasizing表中,添加一个is_approved布尔字段。