0

我有两个类(游戏和报告),并希望将它们与附加属性(默认 = 是或否)链接起来。然后游戏应该有 default_reports 和 optional_reports。然后通过在游戏创建/编辑表单中的选择(多个)中选择默认和可选报告来更新关联。

我尝试过使用 has_many 和 through 以及多态关联,但似乎没有什么适合用例,其中关联的对象是固定的,您只想管理关联。

class Game < ActiveRecord::Base
  has_many :game_reports
  has_many :reports, :through => :game_reports
end

class Report < ActiveRecord::Base
  has_many :game_reports
  has_many :games, :through => :game_reports
end

class GameReport < ActiveRecord::Base
  belongs_to :game
  belongs_to :report
end

任何帮助表示赞赏!

谢谢

4

2 回答 2

0

这只是模型。创建记录的视图和形式是完全不同的事情。

您始终可以向 has_many 添加条件选项。我假设您要为 game_reports 添加默认值,因此将您的类更改为类似。

class Game < ActiveRecord::Base
  has_many :game_reports
  has_many :reports, :through => :game_reports
  has_many :default_reports, through: :game_reports, source: :report, conditions: { game_reports: { default: true } }
end
于 2013-02-19T14:41:51.153 回答
0

Rails 4.2+,使用带范围的多态关联并指定foreign_keyforeign_type选项。

class GameReport
   belongs_to :report, :polymorphic => true
end

class Game
   has_many :game_reports, :as => :report, :dependent => :destroy
   has_many :reports, -> { where attachable_type: "GameReport"},
     class_name: GameReport, foreign_key: :game_report_id,
     foreign_type: :game_report_type, dependent: :destroy
end

其他方法:

Rails 多态关联与同一模型上的多个关联

于 2016-09-04T21:25:23.143 回答