Rails联想麻烦

时间:2015-02-22 08:52:23

标签: ruby-on-rails ruby ruby-on-rails-4 associations

我有3个对象:PlayerTeamUser

# user.rb
has_one :player, dependent: :destroy
has_many :teams, dependent: :destroy
# team.rb
belongs_to :user
# player.rb
belongs_to :user

我的问题出在playerteam的关联之间:

  • 一支球队应该拥有很多并且属于很多球员
  • 一名球员应该有很多并且属于许多球队

这样我就可以通过player.teamsteams.players

访问它们了

此外,我需要在将来添加/删除玩家,所以基本上添加连接(加入表)。

最佳方法是什么? TeamsController上的创建动作是什么样的。

用例

  • 很多Player注册
  • 一个Player创建Team
  • Team由8 Players
  • 组成
  • 以后将从所有者
  • 添加更多Players

以下是问题所在,如何处理PlayersTeams

之间的连接

2 个答案:

答案 0 :(得分:0)

在不知道用例的情况下,无法判断您是否正确定义了关联。所以我无法建议最好的方法。用例是什么?视图是什么样的?

答案 1 :(得分:0)

为什么你不尝试has_and_belongs_to_many关联?

更新:

  1. 首先,您必须创建一个连接表:

    class CreatePlayersTeamsJoinTable < ActiveRecord::Migration
      def change
        create_table :players_teams, id: false do |t|
          t.integer :player_id
          t.integer :team_id
        end
      end
    end
    
  2. 然后定义关联 player.rb: has_and_belongs_to_many :teams team.rb: has_and_belongs_to_many :players

  3. 在你的TeamsController中,我使用嵌套属性并从视图中传递player_ids

  4. 希望有所帮助