比方說,我有一個用戶模型和一個電影模型以及表格來存儲它們。比方說,我想通過添加名爲watchlist_movies的第三個表來簡單地將user_id映射到movie_id來添加監視列表功能。如何獲得Rails關聯使用某個名稱訪問不同名稱的模型?
我現在要添加一個watchlist_movie模型。我想能夠用user.watchlist_movies查詢ActiveRecord並獲取電影對象的集合。到目前爲止,我已經試過(在user.rb)
has_many :watchlist_movies
和
has_many :movies, through: watchlist_movies
的第一個成果,user.watchlist_movies返回的記錄,第二個將在返回的電影記錄的集合user.movies。本質上,我想要的是讓user.watchlist_movies返回一組電影記錄,所以我希望第一個關係中定義的訪問返回第二個關係的內容。我該怎麼做呢?
所以我不清楚你認爲建立這種關係的最佳方式是什麼。你是否說過has_many:電影,通過:watchlist_movies是理想的? –
你在原始問題中有什麼是教科書的方式,除非你有很好的理由,否則我會避免改變名字。個人偏好,當它與Rails約定相矛盾時,通常應該被忽略。一致性導致未來意外減少。您現在可能會覺得很奇怪,但大多數Rails開發人員發現您的代碼與預期完全一致,這也是他們的做法。調用'user.watchlist_movies'並獲得一個Movie模型讓一個不熟悉命名約定的人非常困惑。 – tadman
夠公平的。如果我走這條路線,我是否應該有一個watchlist_movies模型?難道我沒有沒有模型的連接表並使用has_and_belongs_to_many關聯? 此外,我不想使用user.movies的原因之一是,他們將來可能會有其他列表。他們也有通過其他協會的電影。 –