[問題] 問關於 has_and_belongs_to_many 的問題

看板Ruby作者 (shadow)時間16年前 (2007/10/30 12:01), 編輯推噓4(404)
留言8則, 3人參與, 最新討論串1/2 (看更多)
環境: Ruby 1.8.5 / Rails 1.2.3 狀況: 系統裡面有三個 model Diary, Tag, User 其中 Diary 與 Tag 是 many-to-many 關係 class Diary < ActiveRecord::Base has_and_belongs_to_many :tags belongs_to :user end class Tag < ActiveRecord::Base has_and_belongs_to_many :diaries end 現在我想不重複地列出某個 @user 用過的所有 Tags 由於 association 目前似乎不支援 HABTM,沒辦法像這樣定義 User 與 Tag 間 的 has_many :through 關係: # Model class User < ActiveRecord::Base has_many :diaries # has_many :tags :through => :diaries, :unique => true #尚未支援 end # Controller ... @tags = @user.tags 所以我現在的作法是這樣 # Controller @tags = Array.new @user.diaries.each { |diary| @tags |= diary.tags } 是可以 work,但有點醜,且好像還有最佳化的空間。 不知道有沒有更好的作法呢?可以直接用 find_by_sql 下 SQL 指令嗎? 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 210.69.49.253 ※ 編輯: suomax 來自: 210.69.49.253 (10/30 13:05)

10/30 19:42, , 1F
直接下SQL 我是這樣處理的
10/30 19:42, 1F

10/30 19:51, , 2F
有不支援嗎?手冊裡我有看到啊,不過是 :uniq => true
10/30 19:51, 2F

10/30 20:05, , 3F
用 set 不知道會不會比較快,可能要看量
10/30 20:05, 3F

10/30 20:23, , 4F
我所謂的不支援是 has_many :through 無法透過 HABTM 作用
10/30 20:23, 4F

10/30 20:34, , 5F
10/30 20:34, 5F

10/30 20:50, , 6F
這好久以前的事了耶 @@ Milestone: 1.2.6; 現在是 1.15.5
10/30 20:50, 6F

10/30 21:05, , 7F
XD 可是我真的也出現跟這篇一樣的錯誤訊息 >"< 再試看看吧
10/30 21:05, 7F

10/30 21:06, , 8F
感謝~
10/30 21:06, 8F
文章代碼(AID): #179gofpz (Ruby)
文章代碼(AID): #179gofpz (Ruby)