Created
October 11, 2011 10:57
-
-
Save petervandenabeele/1277822 to your computer and use it in GitHub Desktop.
save user and associated referrals in one command
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ rails g model User | |
invoke active_record | |
create db/migrate/20111011103622_create_users.rb | |
create app/models/user.rb | |
invoke rspec | |
create spec/models/user_spec.rb | |
invoke factory_girl | |
create spec/factories/users.rb | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ rails g model Referral | |
invoke active_record | |
create db/migrate/20111011103641_create_referrals.rb | |
create app/models/referral.rb | |
invoke rspec | |
create spec/models/referral_spec.rb | |
invoke factory_girl | |
create spec/factories/referrals.rb | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ vim db/migrate//20111011103622_create_users.rb | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ cat db/migrate//20111011103622_create_users.rb | |
class CreateUsers < ActiveRecord::Migration | |
def change | |
create_table :users do |t| | |
t.string :name | |
t.timestamps | |
end | |
end | |
end | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ vim db/migrate/20111011103641_create_referrals.rb | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ cat db/migrate/20111011103641_create_referrals.rb | |
class CreateReferrals < ActiveRecord::Migration | |
def change | |
create_table :referrals do |t| | |
t.references :user | |
t.string :comment | |
t.timestamps | |
end | |
end | |
end | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ rake db:migrate | |
== CreateUsers: migrating ==================================================== | |
-- create_table(:users) | |
NOTICE: CREATE TABLE will create implicit sequence "users_id_seq" for serial column "users.id" | |
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "users_pkey" for table "users" | |
-> 0.0304s | |
== CreateUsers: migrated (0.0305s) =========================================== | |
== CreateReferrals: migrating ================================================ | |
-- create_table(:referrals) | |
NOTICE: CREATE TABLE will create implicit sequence "referrals_id_seq" for serial column "referrals.id" | |
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "referrals_pkey" for table "referrals" | |
-> 0.0165s | |
== CreateReferrals: migrated (0.0166s) ======================================= | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ rails c | |
Loading development environment (Rails 3.1.1.rc1) | |
001:0> u = User.new(:name => "Peter") | |
=> #<User id: nil, name: "Peter", created_at: nil, updated_at: nil> | |
002:0> r1 = u.referrals.build(:comment => "sailor") | |
=> #<Referral id: nil, user_id: nil, comment: "sailor", created_at: nil, updated_at: nil> | |
003:0> r2 = u.referrals.build(:comment => "developer") | |
=> #<Referral id: nil, user_id: nil, comment: "developer", created_at: nil, updated_at: nil> | |
004:0> u.save | |
(0.4ms) BEGIN | |
SQL (77.3ms) INSERT INTO "users" ("created_at", "name", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["created_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00], ["name", "Peter"], ["updated_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00]] | |
SQL (1.0ms) INSERT INTO "referrals" ("comment", "created_at", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["comment", "sailor"], ["created_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00], ["updated_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00], ["user_id", 2]] | |
SQL (0.4ms) INSERT INTO "referrals" ("comment", "created_at", "updated_at", "user_id") VALUES ($1, $2, $3, $4) RETURNING "id" [["comment", "developer"], ["created_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00], ["updated_at", Tue, 11 Oct 2011 10:56:14 UTC +00:00], ["user_id", 2]] | |
(0.9ms) COMMIT | |
=> true | |
005:0> u | |
=> #<User id: 2, name: "Peter", created_at: "2011-10-11 10:56:14", updated_at: "2011-10-11 10:56:14"> | |
006:0> r1 | |
=> #<Referral id: 2, user_id: 2, comment: "sailor", created_at: "2011-10-11 10:56:14", updated_at: "2011-10-11 10:56:14"> | |
007:0> r2 | |
=> #<Referral id: 3, user_id: 2, comment: "developer", created_at: "2011-10-11 10:56:14", updated_at: "2011-10-11 10:56:14"> | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ vim app/models/referral.rb # adding a validation that will fail on child | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ cat app/models/referral.rb | |
class Referral < ActiveRecord::Base | |
belongs_to :user | |
validates :comment, :presence => true | |
end | |
peterv@ASUS:~/b/rails-apps/apps/temp/base_app$ rails c | |
Loading development environment (Rails 3.1.1.rc1) | |
001:0> u2 = User.new(:name => "Jan") | |
=> #<User id: nil, name: "Jan", created_at: nil, updated_at: nil> | |
002:0> r1 = u2.referrals.build(:comment => "wanderer") | |
=> #<Referral id: nil, user_id: nil, comment: "wanderer", created_at: nil, updated_at: nil> | |
003:0> r2 = u2.referrals.build | |
=> #<Referral id: nil, user_id: nil, comment: nil, created_at: nil, updated_at: nil> | |
004:0> u2.save | |
(0.4ms) BEGIN | |
(0.4ms) ROLLBACK | |
=> false | |
005:0> User.find_by_name("Jan") | |
User Load (1.9ms) SELECT "users".* FROM "users" WHERE "users"."name" = 'Jan' LIMIT 1 | |
=> nil | |
006:0> User.find_by_name("Peter") | |
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."name" = 'Peter' LIMIT 1 | |
=> #<User id: 2, name: "Peter", created_at: "2011-10-11 10:56:14", updated_at: "2011-10-11 10:56:14"> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment