我用Rails 3測試版從擁有4如何獲得其他許多屬性通過
我有以下型號:
class Player < ActiveRecord::Base
has_many :players_items, :dependent => :destroy
has_many :items, :through => :players_items
end
class PlayersItem < ActiveRecord::Base
belongs_to :player
belongs_to :item
end
class Item < ActiveRecord::Base
has_many :players_items, :dependent => :destroy
has_many :players, :through => :players_items
end
在players_controller
def items
@player = Player.find(params[:id])
@player_items = @player.items
end
我有以下屬性
--Items Model--
Item_id:Integer
Name:String
Cost:Integer
Description:Text
--PlayersItem Model--
Item_id:Integer
Player_id:Integer
Total:Integer
Traded:Integer
我試圖打印出與玩家相關的所有項目,併爲每個項目打印出「名稱」,「成本」,「描述」,「總計」和「交易」值。
當我在items.html.erb中調用@player_items時,我只能訪問與Item Model關聯的屬性,而不能訪問與PlayersItem模型關聯的任何屬性。
我試圖訪問同一無論從項目模型和players_items模型屬性「呼」類似於SQL加入這樣
SELECT * FROM players_items INNER JOIN items ON players_items.item_id=items.id
WHERE players_items.player_id = "@player"
說法是這可能嗎?
但不會我需要訪問players_items連接表,因爲我有一個分配給聯接關係(「總」屬性和「交易」)? 我試圖從同樣的「調用」中訪問類似於SQL Join Statement這樣的項目模型和players_items模型的屬性 'SELECT * FROM players_items INNER JOIN items ON players_items.item_id = items.id WHERE players_items .player_id =「@player」' – Joey 2010-07-14 01:23:50
連接表用於HABTM關係。只有兩個fk,沒有其他列。你有什麼是一個加入模型。我的理解是,當你開始收集關於模型之間關係的信息時,這種關係變成了需要模型的「事物」。您將需要使用該模型來訪問您需要的信息。在每個塊的內部,您可以訪問所有需要的信息。當你習慣了數據庫時,它不是你期望的。寫一個Player.find_by_sql 會給你你所期待的(即player_items表的屬性來自一個玩家模型)。 – mikewilliamson 2010-07-14 03:21:24
空間不足。僅供參考,find_by_sql不推薦。我在MySQL中開發並部署到postgres服務器。 Find_by_sql會使這種事情變得非常痛苦。小心使用。 – mikewilliamson 2010-07-14 03:29:39