如何两次引用同一模型并以多选形式创建关联?

时间:2013-02-19 14:26:01

标签: ruby-on-rails-3 associations polymorphism

我有两个类(游戏和报告),并希望将它们与其他属性(默认=是或否)链接。 然后游戏应该有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

感谢任何帮助!

由于

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

Rails 4.2+,使用与范围的多态关联并指定 foreign_key foreign_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 Polymorphic Association with multiple associations on the same model