Perhaps you guys can help me out on something to do with this.
I'd like to allow the end user to adjust the where clause and includes to the query. The where clause is simple unless they want to filter on sub tables. Thats where the includes clause comes into play.
Say we have 3 modles all associated in one-many relationship. IE
Model1
has_many :model2
end
Model2
belongs_to :model1
has_many :model3
end
Model3
belongs_to :model2
end
I know in code I can do the following
Model1.find(:all, :where => "
model3.name = 'test'", :includes => [:model2, {:model2 => :model3}]
The where clause is a string so allowing the use to specify this for a report and save it to the db is easy. I can use the following in my report controller to put it to use.
query = Kernel.const_get(@report.modelname).scoped
query = query.where(@report.whereclause) if !@report.whereclause.blank?
@robj = query.all
The problem is the includes. Since it uses symbols, hashes etc. I can't figure out how to pass a string the user enters that is stored in the db to the :includes clause.
If I only include model2 (ie a direct relationship) I can use a simple string with the relationship name but anything further I can't get to work.
Bob