我用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