Rails-多态has_many:通过模型而不是在create上构建

时间:2018-10-01 04:40:11

标签: ruby-on-rails model polymorphism ruby-on-rails-5 has-many-through

我的has_many:through模型(发布)没有在创建主要关联对象(发布)时构建对象。如何在创建时建立关系?

型号:

class Post
  has_many :postings, dependent: :destroy
  has_many :products, through: :postings, source: :postable, source_type: "Product"
  has_many :Items, through: :postings, source: :postable, source_type: "Item"
end

class Posting
  belongs_to :postable, polymorphic: true
  belongs_to :post
end

class Product
  has_many :postings, as: :postable
  has_many :posts, through: :postings
end

class Item
  has_many :postings, as: :postable
  has_many :posts, through: :postings
end

模式:

  create_table "postings", force: :cascade do |t|
    t.bigint "postable_id"
    t.string "postable_type"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
    t.bigint "post_id"
    t.index ["post_id"], name: "index_postings_on_post_id"
  end

  create_table "posts", force: :cascade do |t|
    t.string "title"
    t.string "slug"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

控制台:

Post.create(title: "Foo", product_id:3)

Traceback (most recent call last):
        1: from (irb):12
ActiveModel::UnknownAttributeError (unknown attribute 'product_id' for Post.)

感谢任何提示!

0 个答案:

没有答案