Hello, I'm working on a Rails app with a fairly complex set of model relationships. I'm abandoning my MySQL based search mechanism for Ferret/acts_as_ferret in the hopes of being able to more easily and effectivly enable searching. Before I get coding I was wondering if you folks might be able to tell me if my plan makes sense, or what could be a better way. The situation is as follows:
Users of the app all "own" a variety of data. Most of the time only the creator of an object has access to it, but there are also scenarios when multiple users have access to a single object. No object can be manipulated without knowledge of what user is making the request. This makes searching difficult because I've got to filter the results based not just on the search params but by user permissions as well. At this point I plan on using a single index, with :store_class_name enabled for all models. The tricky part is limiting the search results to only the items the searching user has access to. I think the easiest way to do with would just to store an "owner_id" along with every entry in the index, which would be the User's ID in my database. So for every search I'd include the user's id as a requirement. The downside is that I'll need to have redundant data for multi-owner situations, with one entry for each user that has access to it. This will make managing deletes and edits complicated (and slow?) because the system will need to be removing/creating multiple instances of the same entry in the index. The end result of this approach is a sort of flattened clone of the database, which seems a little awkward, but I'm not sure how else to go about it. I could just do a regular search by content and filter the results after the fact, but that seems kind of crappy too. Hopefully that made sense. Is there a better way to do this? Did I leave out any details? Thanks! Doug -- Posted via http://www.ruby-forum.com/. _______________________________________________ Ferret-talk mailing list [email protected] http://rubyforge.org/mailman/listinfo/ferret-talk

