Guest User

Untitled

a guest
Feb 20th, 2018
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.40 KB | None | 0 0
  1. ## create_people.rb
  2. class CreatePeople < ActiveRecord::Migration
  3. def self.up
  4. create_table :people, :force => true do |t|
  5. t.column :username, :string
  6. t.column :log_id, :integer
  7. t.column :last_login, :datetime
  8. t.column :access_level_id, :integer
  9. end
  10. execute "alter table people add constraint fk_person_log " +
  11. "foreign key (log_id) references logs(id)"
  12. execute "alter table people add constraint fk_person_access_level " +
  13. "foreign key (access_level_id) references access_levels(id)"
  14. # --- Now that people table is created, add foreign keys for logs table
  15. execute "alter table logs add constraint fk_log_created_by_person " +
  16. "foreign key (created_by_id) references people(id)"
  17. execute "alter table logs add constraint fk_log_updated_by_person " +
  18. "foreign key (last_updated_by_id) references people(id)"
  19. end
  20.  
  21. def self.down
  22. drop_table :people
  23. end
  24. end
  25.  
  26. ## create_logs.rb
  27. class CreateLogs < ActiveRecord::Migration
  28. def self.up
  29. create_table :logs, :force => true do |t|
  30. t.column :created_on, :datetime
  31. t.column :updated_on, :datetime
  32. t.column :created_by_id, :integer
  33. t.column :last_updated_by_id, :integer
  34. t.column :last_ip_address, :string
  35. end
  36. end
  37.  
  38. def self.down
  39. drop_table :logs
  40. end
  41. end
  42.  
  43. ## create_access_levels.rb
  44. class CreateAccessLevels < ActiveRecord::Migration
  45. def self.up
  46. create_table :access_levels do |t|
  47. t.column :name, :string
  48. end
  49. end
  50.  
  51. def self.down
  52. drop_table :access_levels
  53. end
  54. end
  55.  
  56. ## person.rb
  57. class Person < ActiveRecord::Base
  58. belongs_to :created_log, :class_name => 'Log', :foreign_key => "created_by_id"
  59. belongs_to :updated_log, :class_name => 'Log', :foreign_key => "last_updated_by_id"
  60. has_one :log
  61. has_one :access_level
  62. end
  63.  
  64. ## log.rb
  65.  
  66. class Log < ActiveRecord::Base
  67. belongs_to :person
  68. has_one :creator, :class_name => 'Person', :foreign_key => 'created_by_id'
  69. has_one :updater, :class_name => 'Person', :foreign_key => 'last_updated_by_id'
  70. end
  71.  
  72. ## My Description: [plaintext]
  73. The tricky part that I think I am having problems with is the relationships between people and logs.
  74. Each person has a log and each log has both a creator and a updater.
  75. Does the code in person.rb and log.rb make sense with this kind of relationship.
Add Comment
Please, Sign In to add comment