Create RelatedContent model
This commit is contained in:
11
app/models/related_content.rb
Normal file
11
app/models/related_content.rb
Normal file
@@ -0,0 +1,11 @@
|
||||
class RelatedContent < ActiveRecord::Base
|
||||
belongs_to :parent_relationable, polymorphic: true
|
||||
belongs_to :child_relationable, polymorphic: true
|
||||
|
||||
validates :parent_relationable_id, presence: true
|
||||
validates :parent_relationable_type, presence: true
|
||||
validates :child_relationable_id, presence: true
|
||||
validates :child_relationable_type, presence: true
|
||||
validates :parent_relationable_id, uniqueness: { scope: [:parent_relationable_type, :child_relationable_id, :child_relationable_type] }
|
||||
|
||||
end
|
||||
12
db/migrate/20171127171925_create_related_content.rb
Normal file
12
db/migrate/20171127171925_create_related_content.rb
Normal file
@@ -0,0 +1,12 @@
|
||||
class CreateRelatedContent < ActiveRecord::Migration
|
||||
def change
|
||||
create_table :related_contents do |t|
|
||||
t.references :parent_relationable, polymorphic: true, index: { name: 'index_related_contents_on_parent_relationable' }
|
||||
t.references :child_relationable, polymorphic: true, index: { name: 'index_related_contents_on_child_relationable' }
|
||||
t.references :related_content, index: { name: 'opposite_related_content' }
|
||||
t.timestamps
|
||||
end
|
||||
|
||||
add_index :related_contents, [:parent_relationable_id, :parent_relationable_type, :child_relationable_id, :child_relationable_type], name: "unique_parent_child_related_content", unique: true, using: :btree
|
||||
end
|
||||
end
|
||||
17
db/schema.rb
17
db/schema.rb
@@ -11,7 +11,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema.define(version: 20171115164152) do
|
||||
ActiveRecord::Schema.define(version: 20171127171925) do
|
||||
|
||||
# These are extensions that must be enabled in order to support this database
|
||||
enable_extension "plpgsql"
|
||||
@@ -851,6 +851,21 @@ ActiveRecord::Schema.define(version: 20171115164152) do
|
||||
add_index "proposals", ["title"], name: "index_proposals_on_title", using: :btree
|
||||
add_index "proposals", ["tsv"], name: "index_proposals_on_tsv", using: :gin
|
||||
|
||||
create_table "related_contents", force: :cascade do |t|
|
||||
t.integer "parent_relationable_id"
|
||||
t.string "parent_relationable_type"
|
||||
t.integer "child_relationable_id"
|
||||
t.string "child_relationable_type"
|
||||
t.integer "related_content_id"
|
||||
t.datetime "created_at"
|
||||
t.datetime "updated_at"
|
||||
end
|
||||
|
||||
add_index "related_contents", ["child_relationable_type", "child_relationable_id"], name: "index_related_contents_on_child_relationable", using: :btree
|
||||
add_index "related_contents", ["parent_relationable_id", "parent_relationable_type", "child_relationable_id", "child_relationable_type"], name: "unique_parent_child_related_content", unique: true, using: :btree
|
||||
add_index "related_contents", ["parent_relationable_type", "parent_relationable_id"], name: "index_related_contents_on_parent_relationable", using: :btree
|
||||
add_index "related_contents", ["related_content_id"], name: "opposite_related_content", using: :btree
|
||||
|
||||
create_table "settings", force: :cascade do |t|
|
||||
t.string "key"
|
||||
t.string "value"
|
||||
|
||||
@@ -882,4 +882,7 @@ LOREM_IPSUM
|
||||
end
|
||||
end
|
||||
|
||||
factory :related_content do
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user