【问题标题】:Composite foreign keys in Rails ActiveRecordRails ActiveRecord 中的复合外键
【发布时间】:2013-03-15 15:18:43
【问题描述】:

我目前有一个名为 Image 的模型。此模型与Article 绑定。

class Article < ActiveRecord::Base
  has_many: images
end

图像表包含article_id,因此图像与文章相关联。

但是,我也想将我的图像与其他模型一起使用。因此,我想将article_id 更改为owner_id 之类的东西,并向Image 模型添加一个名为owner_model 的新属性。

这样其他模型也可以有很多图像。

知道是否可以使用 ActiveRecord 优雅地实现这一点以及如何去做?

顺便说一句,我正在使用 CarrierWave 处理图像。

【问题讨论】:

    标签: ruby-on-rails database activerecord


    【解决方案1】:

    您可以使用多态关联。

    rails guide 有一个与您的问题相符的简洁示例。

    class Picture < ActiveRecord::Base
      belongs_to :imageable, :polymorphic => true
    end
    
    class Employee < ActiveRecord::Base
      has_many :pictures, :as => :imageable
    end
    
    class Product < ActiveRecord::Base
      has_many :pictures, :as => :imageable
    end
    

    【讨论】:

      【解决方案2】:

      您是否研究过多态关联? Ryan 有一段视频:http://railscasts.com/episodes/154-polymorphic-association

      它将允许您将不同的类与您的图像相关联。

      【讨论】:

        【解决方案3】:

        【讨论】:

          猜你喜欢
          • 2023-03-19
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多