【发布时间】:2014-04-20 18:51:43
【问题描述】:
我有一个基本的 has_many through 模型,客户可以拥有多个游戏:
客户模型属于合作伙伴,因此有一个 partner_id 列,与属于合作伙伴的游戏模型相同。
models/customer.rb
has_many :customer_games
has_many :games, through: :customer_games
belongs_to :partner, :foreign_key => 'partner_id'
models/game.rb
has_many :customer_games
has_many :customers, through: :customer_games
belongs_to :partner, :foreign_key => 'partner_id'
models/customer_games.rb
belongs_to :customer, :foreign_key => 'customer_id'
belongs_to :game, :foreign_key => 'game_id'
在 admin/customer.rb 中,我有一个(工作)表,提供了特定客户的所有游戏的详细信息。我是这样理解的:
panel "Games and infos of these games for this customer:" do
table_for customer.customer_games do |t|
t.column("Name") { |customer_game| link_to customer_game.game.title, admin_game_path(customer_game.game), target: :blank }
t.column("Partner") { |customer_game| if customer_game.game.partner.name.present?
link_to customer_game.game.partner.name, admin_partner_path(customer_game.game.partner), target: :blank
else
status_tag('Empty')
end
}
t.column("Country") { |customer_game| customer_game.game.country }
end
end
我的问题:我只想在上表中显示游戏,它所属的合作伙伴等于客户的合作伙伴。
也就是说如果你在customer_games表中取games_id和customer_id一行,如果我去查看game_id链接的partner_id,再查看customer_id对应的partner_id,如果相等,那么这个游戏可以出现在我的表格中。
很难用语言来解释,对不起。
作为参考,我的最后一次尝试是我尝试过的,但它不起作用:
panel "Games and infos of these games for this customer:" do
table_for customer.customer_games.where(game_id.game.partner_id == customer_id.customer.partner_id) do |t|
t.column("Game Name") { |customer_game| link_to customer_game.game.title, admin_game_path(customer_game.game), target: :blank }
t.column("Partner") { |customer_game| if customer_game.game.partner.name.present?
link_to customer_game.game.partner.name, admin_partner_path(customer_game.game.partner), target: :blank
else
status_tag('Empty')
end
}
t.column("Country") { |customer_game| customer_game.game.country }
end
end
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 postgresql activeadmin