到目前爲止,我一直在使用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