[問題] 問關於 has_and_belongs_to_many 的問題
環境:
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
10/30 19:42, 1F
推
10/30 19:51, , 2F
10/30 19:51, 2F
→
10/30 20:05, , 3F
10/30 20:05, 3F
推
10/30 20:23, , 4F
10/30 20:23, 4F
→
10/30 20:34, , 5F
10/30 20:34, 5F
→
10/30 20:50, , 6F
10/30 20:50, 6F
推
10/30 21:05, , 7F
10/30 21:05, 7F
→
10/30 21:06, , 8F
10/30 21:06, 8F
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):