From 7aaf4867d2d7c1adea419052f069dab542af13b9 Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Wed, 16 Aug 2006 18:10:52 +0000 Subject: Included associations: go deep. git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@4776 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- activerecord/test/fixtures/db_definitions/schema.rb | 10 ++++++++++ activerecord/test/fixtures/edge.rb | 5 +++++ activerecord/test/fixtures/edges.yml | 6 ++++++ activerecord/test/fixtures/mixin.rb | 1 + activerecord/test/fixtures/vertex.rb | 9 +++++++++ activerecord/test/fixtures/vertices.yml | 4 ++++ 6 files changed, 35 insertions(+) create mode 100644 activerecord/test/fixtures/edge.rb create mode 100644 activerecord/test/fixtures/edges.yml create mode 100644 activerecord/test/fixtures/vertex.rb create mode 100644 activerecord/test/fixtures/vertices.yml (limited to 'activerecord/test/fixtures') diff --git a/activerecord/test/fixtures/db_definitions/schema.rb b/activerecord/test/fixtures/db_definitions/schema.rb index a5f2c9dc10..f565b74564 100644 --- a/activerecord/test/fixtures/db_definitions/schema.rb +++ b/activerecord/test/fixtures/db_definitions/schema.rb @@ -39,4 +39,14 @@ ActiveRecord::Schema.define do t.column :author_id, :integer t.column :favorite_author_id, :integer end + + create_table :vertices, :force => true do |t| + t.column :label, :string + end + + create_table :edges, :force => true do |t| + t.column :source_id, :integer, :null => false + t.column :sink_id, :integer, :null => false + end + add_index :edges, [:source_id, :sink_id], :unique => true end diff --git a/activerecord/test/fixtures/edge.rb b/activerecord/test/fixtures/edge.rb new file mode 100644 index 0000000000..55e0c31fcb --- /dev/null +++ b/activerecord/test/fixtures/edge.rb @@ -0,0 +1,5 @@ +# This class models an edge in a directed graph. +class Edge < ActiveRecord::Base + belongs_to :source, :class_name => 'Vertex', :foreign_key => 'source_id' + belongs_to :sink, :class_name => 'Vertex', :foreign_key => 'sink_id' +end diff --git a/activerecord/test/fixtures/edges.yml b/activerecord/test/fixtures/edges.yml new file mode 100644 index 0000000000..c16c70dd2f --- /dev/null +++ b/activerecord/test/fixtures/edges.yml @@ -0,0 +1,6 @@ +<% (1..4).each do |id| %> +edge_<%= id %>: + id: <%= id %> + source_id: <%= id %> + sink_id: <%= id + 1 %> +<% end %> \ No newline at end of file diff --git a/activerecord/test/fixtures/mixin.rb b/activerecord/test/fixtures/mixin.rb index afc976f8f1..1f200da62d 100644 --- a/activerecord/test/fixtures/mixin.rb +++ b/activerecord/test/fixtures/mixin.rb @@ -12,6 +12,7 @@ end class RecursivelyCascadedTreeMixin < Mixin acts_as_tree :foreign_key => "parent_id" + has_one :first_child, :class_name => 'RecursivelyCascadedTreeMixin', :foreign_key => :parent_id end class ListMixin < Mixin diff --git a/activerecord/test/fixtures/vertex.rb b/activerecord/test/fixtures/vertex.rb new file mode 100644 index 0000000000..f4c11144de --- /dev/null +++ b/activerecord/test/fixtures/vertex.rb @@ -0,0 +1,9 @@ +# This class models a vertex in a directed graph. +class Vertex < ActiveRecord::Base + has_many :sink_edges, :class_name => 'Edge', :foreign_key => 'source_id' + has_many :sinks, :through => :sink_edges, :source => :sink + + has_and_belongs_to_many :sources, + :class_name => 'Vertex', :join_table => 'edges', + :foreign_key => 'sink_id', :association_foreign_key => 'source_id' +end diff --git a/activerecord/test/fixtures/vertices.yml b/activerecord/test/fixtures/vertices.yml new file mode 100644 index 0000000000..8af0593f75 --- /dev/null +++ b/activerecord/test/fixtures/vertices.yml @@ -0,0 +1,4 @@ +<% (1..5).each do |id| %> +vertex_<%= id %>: + id: <%= id %> +<% end %> \ No newline at end of file -- cgit v1.2.3