所以我在这里有一个有点混乱的关系,在Note,Group和User之间。我最终在模型中使用了has_many两次。但我现在专注于Note&集团关系。
背景:一个小组可以有一个笔记。用户也可以有笔记。这就是我的Note是多态的原因。但是,我还创建了一个名为Tag的连接模型,因此Note可以属于多个组。在我的代码中,我最终得到了多个'has_many:notes'。请参阅下面的所有代码。做这样的事情的正确方法是什么?
提前致谢!
belongs_to :notable, :polymorphic => true
has_many :tags
has_many :groups, :through => :tags
has_many :notes, :as => :notable
has_many :notes, :as => :notable
has_many :tags
has_many :notes, :through => :tags
belongs_to :note
belongs_to :group
答案 0 :(得分:5)
你只需要给它一个不同的名字。
class Group
has_many :notes, :as => :notable
has_many :tags
has_many :tagged_notes, :class_name => 'Note', :through => :tags
end
如果您只需要:as => :notable
部分的单个注释(在您的问题中不是很清楚),您可以这样做:
class Group
has_one :note, :as => :notable
has_many :tags
has_many :notes, :through => :tags
end
名称必须不同。虽然使用note
与notes
,但可能不太清楚代码的其他部分之间的区别。