Is there any way to set a field name that is different than the method name used to populate it? My example: In Rails, I''m using acts_as_ferret on a Article model that has_many Authors. I want to be able to index authors'' names with each article. Since @article.authors yields an array of Author objects (and not an indexable string), I''ve created this method in my Article model: def authors_aaf @authors.collect {|a| a.name }.to_sentence end I call it "authors_aaf" because "authors" would cause a conflict. But I want my field name to be "authors", because that makes the most sense. (Users shouldn''t have to type "authors_aaf:Joe" to search by author.) Any idea how this can/should be done? -- Posted via http://www.ruby-forum.com/.
On Mon, Oct 08, 2007 at 04:30:12AM +0200, Chase DuBois wrote:> Is there any way to set a field name that is different than the method > name used to populate it? > > My example: > > In Rails, I''m using acts_as_ferret on a Article model that has_many > Authors. I want to be able to index authors'' names with each article. > Since @article.authors yields an array of Author objects (and not an > indexable string), I''ve created this method in my Article model: > > def authors_aaf > @authors.collect {|a| a.name }.to_sentence > end > > I call it "authors_aaf" because "authors" would cause a conflict. But I > want my field name to be "authors", because that makes the most sense. > (Users shouldn''t have to type "authors_aaf:Joe" to search by author.) > > Any idea how this can/should be done?You could pass the query through a de-aliasing helper method - something that does query.gsub!(/authors:/, ''authors_aaf:'') - before handing off the query string to ferret. -Chris
Possibly Parallel Threads
- Conditional pluralize without the number
- [ActiveSupport] Patches needing review: re-organization of #to_query methods, preservation of XML/JSON content-type
- Eager loading wierdness
- How do you use acts_as_ferret without rails?
- acts_as_ferret: can i specify a search on 1 field as suppose