到目前为止,我一直在使用acts_as_taggable_on插件来标记公告。建立模型之间的问题
即插件创建下表:
引用的Tagging:涉及标签和通告表(用于标记物品,它具有一个名为taggable_id场,我重命名为“announcement_id”什么,我会在下面解释) 。
标签:有标签ID和名称。
有一天,我发现我没有办法让公告标有某个标签,但是做了Announcement.tagged_with(tag_name)
,我不想按名称搜索,而是用id。
因此,由于我几乎没有使用该插件中的功能,因此我决定创建标记和标记表模型,以完成此操作:Announcement.tags
。
该模型的关系看起来如下:
编辑:
class Tagging < ActiveRecord::Base
belongs_to :announcement
belongs_to :tag
end
class Tag < ActiveRecord::Base
has_many :taggings
has_many :announcements, :through => :taggings
end
class Announcement < ActiveRecord::Base
has_many :taggings
has_many :tags, :through => :taggings
为什么我不能执行该命令Announcement.tags
?因为当我尝试,我得到
未定义的方法'标签
那么,如果我想要获得所有使用特定tag_id标记的公告,该怎么办? – 2010-06-16 15:02:10
'Tag.find(tag_id).announcements' – Chowlett 2010-06-16 15:05:21
这是行不通的。 – 2010-06-16 15:12:52