New concept! Foreign key constraints. On database!

private-asciicasts
Marcin Kulik 9 years ago
parent 24727fefe4
commit 3078b85d71

@ -32,6 +32,7 @@ gem 'rack-robustness', '~> 1.1.0'
gem 'rack-rewrite', '~> 1.5.0'
gem 'oj', '~> 2.11'
gem 'oj_mimic_json', '~> 1.0'
gem 'foreigner', '~> 1.7'
group :development do
gem 'quiet_assets', '~> 1.0.1'
@ -40,6 +41,7 @@ group :development do
gem 'foreman', '~> 0.63.0'
gem 'spring'
gem 'spring-commands-rspec'
gem 'immigrant'
end
group :test, :development do

@ -112,6 +112,8 @@ GEM
net-ssh (>= 2.1.3)
nokogiri (~> 1.5.0)
ruby-hmac
foreigner (1.7.2)
activerecord (>= 3.0.0)
foreman (0.63.0)
dotenv (>= 0.7)
thor (>= 0.13.6)
@ -132,6 +134,8 @@ GEM
multi_xml (>= 0.5.2)
i18n (0.6.11)
ice_nine (0.11.0)
immigrant (0.3.1)
activerecord (>= 3.0)
jasmine-core (1.3.1)
jasmine-rails (0.4.5)
jasmine-core (~> 1.3)
@ -353,9 +357,11 @@ DEPENDENCIES
draper (~> 1.3.1)
factory_girl_rails (~> 4.2.0)
fog (~> 1.9.0)
foreigner (~> 1.7)
foreman (~> 0.63.0)
guard
guard-rspec
immigrant
jasmine-rails (~> 0.4.5)
jquery-rails (~> 3.0.4)
kaminari (~> 0.14.1)

@ -11,15 +11,15 @@ class Asciicast < ActiveRecord::Base
serialize :snapshot, ActiveSupportJsonProxy
belongs_to :user
has_many :comments, -> { order(:created_at) }, dependent: :destroy
has_many :likes, dependent: :destroy
validates :user, :terminal_columns, :terminal_lines, :duration, presence: true
validates :stdout_data, :stdout_timing, presence: true, unless: :file
validates :file, presence: true, unless: :stdout_data
validates :terminal_columns, :terminal_lines, :duration, :presence => true
validates :snapshot_at, numericality: { greater_than: 0, allow_blank: true }
belongs_to :user
has_many :comments, -> { order(:created_at) }, :dependent => :destroy
has_many :likes, :dependent => :destroy
scope :featured, -> { where(featured: true) }
scope :by_recency, -> { order("created_at DESC") }
scope :by_random, -> { order("RANDOM()") }

@ -0,0 +1,11 @@
class AddKeys < ActiveRecord::Migration
def change
add_foreign_key "api_tokens", "users", name: "api_tokens_user_id_fk"
add_foreign_key "asciicasts", "users", name: "asciicasts_user_id_fk"
add_foreign_key "comments", "asciicasts", name: "comments_asciicast_id_fk"
add_foreign_key "comments", "users", name: "comments_user_id_fk"
add_foreign_key "expiring_tokens", "users", name: "expiring_tokens_user_id_fk"
add_foreign_key "likes", "asciicasts", name: "likes_asciicast_id_fk"
add_foreign_key "likes", "users", name: "likes_user_id_fk"
end
end

@ -11,7 +11,7 @@
#
# It's strongly recommended that you check this file into your version control system.
ActiveRecord::Schema.define(version: 20150228174314) do
ActiveRecord::Schema.define(version: 20150311094819) do
# These are extensions that must be enabled in order to support this database
enable_extension "plpgsql"
@ -115,4 +115,16 @@ ActiveRecord::Schema.define(version: 20150228174314) do
add_index "users", ["provider", "uid"], name: "index_users_on_provider_and_uid", unique: true, using: :btree
add_index "users", ["username"], name: "index_users_on_username", using: :btree
add_foreign_key "api_tokens", "users", name: "api_tokens_user_id_fk"
add_foreign_key "asciicasts", "users", name: "asciicasts_user_id_fk"
add_foreign_key "comments", "asciicasts", name: "comments_asciicast_id_fk"
add_foreign_key "comments", "users", name: "comments_user_id_fk"
add_foreign_key "expiring_tokens", "users", name: "expiring_tokens_user_id_fk"
add_foreign_key "likes", "asciicasts", name: "likes_asciicast_id_fk"
add_foreign_key "likes", "users", name: "likes_user_id_fk"
end

Loading…
Cancel
Save