Guest User

Untitled

a guest
Apr 20th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.94 KB | None | 0 0
  1. #!/usr/bin/ruby19
  2.  
  3. require 'sequel'
  4.  
  5. Sequel::Model.plugin :schema
  6.  
  7. DB = Sequel.sqlite
  8.  
  9. class Post < Sequel::Model
  10. set_schema do
  11. primary_key :id
  12. end
  13. many_to_many :tags, :join_table => :taggings
  14.  
  15. create_table unless table_exists?
  16. end
  17.  
  18. class Tag < Sequel::Model
  19. set_schema do
  20. primary_key :id
  21. end
  22. many_to_many :posts, :join_table => :taggings
  23.  
  24. create_table unless table_exists?
  25. end
  26.  
  27. class Tagging < Sequel::Model
  28. set_schema do
  29. primary_key :id
  30. foreign_key :post_id, :table => :posts
  31. foreign_key :tag_id, :table => :tags
  32. end
  33. many_to_one :posts
  34. many_to_one :tags
  35.  
  36. create_table unless table_exists?
  37. end
  38.  
  39. post = Post.create
  40. tag = Tag.create
  41. post.add_tag tag
  42.  
  43. p post.tags #=> [#<Tag @values={:id=>1}>]
  44. p tag.posts #=> [#<Post @values={:id=>1}>]
  45. p Tagging.all #=> [#<Tagging @values={:id=>1, :post_id=>1, :tag_id=>1}>]
  46. p Post.all #=> [#<Post @values={:id=>1}>]
  47. p Tag.all #=> [#<Tag @values={:id=>1}>]
Add Comment
Please, Sign In to add comment