【发布时间】:2016-01-07 23:04:01
【问题描述】:
如何保存和查看两个通过 STI 继承的不同模型的 has_many 关系?
我有一个项目的基本模型如下:
class Project < ActiveRecord::Base
attr_accessible :slug,
:category_id,
:description,
:name,
:visible,
:note,
:contractor, :contractor_url,
:date_complete, :architect, :architect_url,
:building_year,
:project_type,
:address, :city, :state, :country,
:pictures,
:photo_credit
has_many :pictures, :order=>:id, :dependent => :destroy
图片.rb:
class Picture < ActiveRecord::Base
attr_accessible :project_id, :image, :caption, :cover, :dimensions
belongs_to :project
使用 STI,我有显示项目子集且特定于主页的主页项目:
class HomepageItem < Project
attr_accessible :slug,
:name,
:visible,
:note,
:pictures,
:photo_credit
has_many :pictures, :order=>:id, :dependent => :destroy
这会导致错误,期望图片上有一个新列 homepage_item_id 而不是 project_id
PG::UndefinedColumn: 错误:列pictures.homepage_item_id 不存在
我相信这应该在pictures.project_id 列上查看。
注意:如果没有在 HomepageItem 中定义 has_many,则会保存项目,但不会创建图片。这也是一个 Rails 3.2.22 项目。
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 has-many single-table-inheritance