Ruby on rails -在同一关联中使用has_one:through和has_many:through



我试图用以下约束来建模图像模型和页面模型之间的关系:

1 -一个页面最多可以有一个图像(0图像也可以)

2 -一个图像可以出现在多个页面。

,所以关系可以推测如下:

class Image < ActiveRecord :: Base
  has_many :pages, :through :imageables
end
class Page < ActiveRecord :: Base
  has_one :image, :through :imageables
end
class Imageable < ActiveRecord :: Base
  belongs_to :image
  belongs_to :page
end

通常这种关联要么同时存在于带有has_many:through的Image类和Page类,要么同时存在于带有has_one:through的Page类在这种情况下,有可能混合使用has_one:through和has_many:through吗?ActiveRecord没有提到这个特殊情况

p。S:我选择使用连接模型的方式,因为我有其他模型,可以有相同的图像,以及不同的约束(has_many而不是has_one)

谢谢你的帮助!

上面的代码不起作用…我找到了一个中间的解决方案来实现我需要的模式。

最终代码如下:

class Image < ActiveRecord :: Base
  has_many :pages, :through :imageables
end
class Page < ActiveRecord :: Base
  has_many :image, :through :imageables
  accepts_nested_attributes :images, allow_destroy => true
end
class Imageable < ActiveRecord :: Base
  belongs_to :image
  belongs_to :page
  validates_uniqueness_of :page_id
end

当我使用rails_admin来编辑我的模型时,当涉及到添加新图像和Imageable验证时,我得到了正好的东西,确保编辑器不会混淆规范…

作为一个解决方案有点奇怪,但相信我,它很适合我正在开发的应用程序的上下文…

我把它贴出来,如果有人有类似的问题。

相关内容

  • 没有找到相关文章

最新更新