Ruby on rails 铁路协会设计

Ruby on rails 铁路协会设计,ruby-on-rails,activerecord,Ruby On Rails,Activerecord,我有一个文章模型,它可以有一个与之关联的图像模型。但是,我的图像模型可以与许多文章相关联。我的第一次尝试是通过以下方式定义关系: class Article < ActiveRecord::Base belongs_to :image end class Image < ActiveRecord::Base has_many :articles :dependent => :nullify end 这在技术上是可行的,它只需要将image_id外键放在art

我有一个文章模型,它可以有一个与之关联的图像模型。但是,我的图像模型可以与许多文章相关联。我的第一次尝试是通过以下方式定义关系:

class Article < ActiveRecord::Base
    belongs_to :image
end

class Image < ActiveRecord::Base
    has_many :articles :dependent => :nullify
end
这在技术上是可行的,它只需要将image_id外键放在articles表上。从数据库的角度来看,这很有意义,但感觉不对。说一篇文章属于一幅图片是没有意义的。实际上,图像属于一篇文章。说一篇文章有一个图像更合理,但如果我使用has-one,它会将Article-id外键放在Images表上。因为一个图像可以有多个文章,所以在Images表中定义一个Article_id列是没有意义的


必须有一种更简单的方法来建模。

这对你有用吗

class Article < ActiveRecord::Base
  has_one :image
end

class Image < ActiveRecord::Base
  has_and_belongs_to_many :articles, :dependent => :nullify
end

从数据库的角度来看,这是有意义的,所以我同意。从Rails的角度来看,由于措辞的原因,可能没有完美的意义,但这种关系在示意图上是合适的。