On Apr 17, 4:23 am, Kane <[email protected]> wrote:
> class CreateComments < Sequel::Migration
> def up
> create_table :comments do
> primary_key :id
> DateTime :created_at, :null => false
> Varchar :author, :size => 128, :null => false
> Text :data, :null => false
> foreign_key :post_id
> end
> end
> def down
> drop_table :comments
> end
> end
>
> #i think something wrong here, but don't know right way to do this
> class CreateCommentsComments < Sequel::Migration
> def up
> create_table :comments_comments do
> primary_key :id
> foreign_key :comment_id, :comments
> foreign_key :parent_id, :comments
> end
> end
> def down
> drop_table :comments_comments
> end
> end
>
> class Post < Sequel::Model
> one_to_many :comments
> end
> class Comment < Sequel::Model
> many_to_one :post
> many_to_many :comments
> end
Are you trying to make a tree structure or a graph in the database?
Meaning, can each comment be associated with multiple parent
comments? If yes, you have a graph, if not, you have a tree. you have
a tree, the following is better:
class CreateComments < Sequel::Migration
def up
create_table :comments do
primary_key :id
DateTime :created_at, :null => false
varchar :author, :size => 128, :null => false
text :data, :null => false
foreign_key :post_id, :posts
foreign_key :parent_id, :comments
end
end
def down
drop_table :comments
end
end
class Comment < Sequel::Model
many_to_one :post
many_to_one :parent, :class=>Comment
one_to_many :children, :class=>Comment, :key=>:parent_id
end
If you have a graph, you might want the following:
class CreateCommentsComments < Sequel::Migration
def up
create_table :comments_comments do
primary_key :id
foreign_key :left_id, :comments
foreign_key :right_id, :comments
end
end
def down
drop_table :comments_comments
end
end
class Comment < Sequel::Model
many_to_one :post
many_to_many :comments, :left_key=>:left_id, :right_key=>:right_id
end
My guess is you want a tree, since you probably don't want to comment
on multiple comments at once.
Jeremy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"sequel-talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/sequel-talk?hl=en
-~----------~----~----~----~------~----~------~--~---