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