Hi,
Lets suppose a Resource and Relation model exist and Article and a
Comment inherit from Resource and an ArticleComment defines a
relationship. When everything is setup and you create your instances
and save them this is what is saved in the database.
RESOURCES
| id | description | type
| 14 | NULL | SpotArticle
| 15 | NULL | Comment
RELATIONS
| id | source_resource_id | target_resource_id | type
|source_resource_type | target_resource_type
| 4 | 14 | 15 |
ArticleComment | SpotArticle | Comment
At least this is what I would like to have in the database. But the
source_resource_type and target_resource_type both contain "Resource"
instead. Looking at the rails code I saw in
"ActiveRecord::Associations::AssociationProxy.set_belongs_to_association_for"
that the Class.base_name is stored instead of the Class.name and this
results in the base class name Resource.
Is there anybody who knows why the Class.base_name is used here?
Is there a better way of doing this? Without having to override
set_belongs_to_association_for?
Mehmet
Setup stuff
def self.up
create_table :relations do |t|
t.integer :source_resource_id, :target_resource_id
t.string :source_resource_type, :target_resource_type, :type
t.timestamps
end
create_table :resources do |t|
t.string :type; :description
t.timestamps
end
end
class Resource < ActiveRecord::Base
end
class Relation < ActiveRecord::Base
end
class Article < Resource
end
class SpotArticle < Article
has_many :article_comments, :as => :source_resource, :dependent
=> :destroy
end
class Comment < Resource
has_many :article_comments, :as => :target_resource, :dependent
=> :destroy
end
class ArticleComment < Relation
belongs_to :source_resource, :polymorphic => true, :class_name =>
''SpotArticle''
belongs_to :target_resource, :polymorphic => true, :class_name =>
''Comment''
end
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Core" group.
To post to this group, send email to rubyonrails-core@googlegroups.com
To unsubscribe from this group, send email to
rubyonrails-core-unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/rubyonrails-core?hl=en
-~----------~----~----~----~------~----~------~--~---