views:

39

answers:

1

I'm trying to make has_many relation with dynamic class_name attribute

class Category < ActiveRecord::Base
  has_many :ads, :class_name => ( lambda { return self.item_type } ) 
end

or

class Category < ActiveRecord::Base
  has_many :ads, :class_name => self.item_type
end

But i got errors:

can't convert Proc into String

or

undefined method `item_type' for #<Class:0xb62c6c88>

EDIT I have two different types of Ads

LeaseAd, RentAd they implemented using single table inheritance

Then i have Category of ads as nested set. I would like to specify dinamicly which type of ads belongs to Category object.

Thank you for any help!

+1  A: 
can't convert Proc into String

means that rails is expecting a String

undefined method `item_type' for #<Class:0xb62c6c88>

means that you didn't define item_type for the Class-object

I believe what you want here is not possible this way.

I would use something like singletable inheritance for the ads and its subtypes.

jigfox
Thank you for your reply. I understand these errors. I just explained my approaches. Is there any chance to set :class_name attribute dynamicly?
vooD
As I said, I believe it is not possible. I would use singletable inheritance
jigfox