Rails 在同一个模型上有多个关联的多态关联错误
Rails Polymorphic Association with multiple associations on the same model bug
我有同样的问题:Rails Polymorphic Association with multiple associations on the same model
但是这个问题的解决方案对我不起作用。我有一个图片模型和一个事件模型。活动有很多图片和一张封面图片。两个型号都在这里。
class Picture < ActiveRecord::Base
belongs_to :image, polymorphic: true
end
class Event < ActiveRecord::Base
has_many :pictures, as: :image, :dependent => :destroy
has_one :cover_picture, -> { where image_type: "CoverPicture"},
class_name: Picture, foreign_key: :image_id,
foreign_type: :image_type, dependent: :destroy
end
这里的问题是,当我创建一张新图片并将其设置为事件的 cover_picture 时,它不会将 image_type 设置为 "CoverPicture"。当我在将 image_type 专门设置为 "CoverPicture" 后尝试保存它时,它会出错 "NameError: uninitialized constant CoverPicture"
image_type
在这个多态关联中有一个特定的功能......它标识关联模型(就像image_id
标识id)。
您不应该更改 image_type
,因为那样会破坏关联。
在图片模型中创建一个新的布尔列,比如cover_picture
,你可以做...
has_one :cover_picture, -> {where cover_picture: true} ...
这样做的好处是你的封面图片也包含在你的图片关联中,但如果你想从 has_many 中排除该图片,那么你也可以对其应用 where 子句...
has_many :pictures, -> {where.not cover_picture: true} ...
我有同样的问题:Rails Polymorphic Association with multiple associations on the same model
但是这个问题的解决方案对我不起作用。我有一个图片模型和一个事件模型。活动有很多图片和一张封面图片。两个型号都在这里。
class Picture < ActiveRecord::Base
belongs_to :image, polymorphic: true
end
class Event < ActiveRecord::Base
has_many :pictures, as: :image, :dependent => :destroy
has_one :cover_picture, -> { where image_type: "CoverPicture"},
class_name: Picture, foreign_key: :image_id,
foreign_type: :image_type, dependent: :destroy
end
这里的问题是,当我创建一张新图片并将其设置为事件的 cover_picture 时,它不会将 image_type 设置为 "CoverPicture"。当我在将 image_type 专门设置为 "CoverPicture" 后尝试保存它时,它会出错 "NameError: uninitialized constant CoverPicture"
image_type
在这个多态关联中有一个特定的功能......它标识关联模型(就像image_id
标识id)。
您不应该更改 image_type
,因为那样会破坏关联。
在图片模型中创建一个新的布尔列,比如cover_picture
,你可以做...
has_one :cover_picture, -> {where cover_picture: true} ...
这样做的好处是你的封面图片也包含在你的图片关联中,但如果你想从 has_many 中排除该图片,那么你也可以对其应用 where 子句...
has_many :pictures, -> {where.not cover_picture: true} ...