ruby-on-rails - 橄榄球运动员的 Rails 模型关系

标签 ruby-on-rails ruby activerecord database-design rails-activerecord

我的 rails 4.2.4 项目中有两个模型,我想将它们结合在一起,但我正在努力创建两者之间的正确关系。 有问题的域名是橄榄球,所有代码都可以在 https://github.com/rgbycch/rgbycch-rest/tree/rails 找到。 .模型是:

播放器 ( https://github.com/rgbycch/rgbycch-rest/blob/rails/app/models/player.rb ) 玩家位置 ( https://github.com/rgbycch/rgbycch-rest/blob/rails/app/models/player_position.rb )

我希望能够创建一种关系,使 Player 可以拥有多个偏好的 PlayingPosition。我相信我的数据库结构需要看起来像这样:

create_table :favoured_positions do |t|
  t.references :player, index: true, foreign_key: true # fk to player table
  t.references :player_position, index: true, foreign_key: true # fk to player_position table
  t.integer :num_favs # additional data for a favored playing position

  t.timestamps null: false
end

我想我可以像这样生成一个新的 FavoredPosition 模型:

bundle exec bin/rails generate model FavouredPosition player:references player_position:references num_favs:integer

生成的类如下所示:

class FavouredPosition < ActiveRecord::Base
  belongs_to :player
  belongs_to :player_position
end

我不确定如何更改我的 PlayerPlayerPosition 模型以反射(reflect)这种新关系。以下是否正确:

class Player < ActiveRecord::Base
  has_many :favored_positions, :through => :favoured_positions
end

class PlayerPositions < ActiveRecord::Base
  has_many :favored_playing_positions, :through => :favoured_positions
end

你能建议我也为这些表中的任何一个添加索引吗?

谢谢,

肖恩

最佳答案

您需要像这样设置关联:

class Player < ActiveRecord::Base
  has_many :favoured_positions
  has_many :player_positions, through: :favoured_positions
end

class PlayerPosition < ActiveRecord::Base
  has_many :favoured_positions
  has_many :players, through: :favoured_positions
end

参见:http://guides.rubyonrails.org/association_basics.html#the-has-many-through-association

关于ruby-on-rails - 橄榄球运动员的 Rails 模型关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32712673/

相关文章:

ruby-on-rails - 在 Rails 中识别记录/对象是否脏

ruby-on-rails - 特殊字符渲染不正确

css - 动态替换 css 标题图片

sql - 改进 rails 中的调度/预订 sql 查询

ruby-on-rails - Ruby:将数组或哈希转换为 activerecord 关系

php - Yii2 将模型保存到数据库

ruby-on-rails - 当前用户不会持续执行一个 Controller 操作

ruby-on-rails - Rails 自动登录,无法注销

arrays - 更改数组元素的周围元素

ruby - 如何列出包括点文件但不包括 .和 ..?