Hi Pat,

Thanks for your reply!
The :multi attribute type is something i was missing!
I'm going to try that now.


Gedeon

On Apr 9, 8:35 am, Pat Allan <[email protected]> wrote:
> Hi Gedeon
>
> I think the best way forward is to create another custom SQL snippet - if the 
> project is public, return 0, otherwise, return the member ids... and then you 
> can filter on :member_ids => [0, @user.id] for moderators, and :member_ids => 
> @user.id for normal users. I think this will work, but haven't thought about 
> it too much.
>
> Keep in mind you'll want to set the attribute's type as :multi.
>
> Hope this helps
>
> --
> Pat
>
> On 08/04/2010, at 3:00 PM, Gedeon wrote:
>
> > Hello!
>
> > I'm adding a search feature in a project and just started using Sphinx
> > and Thinking Sphinx about a week ago. I'm seeking some help from
> > Sphinx Gurus here, can any of you help me? I would be extremely
> > grateful, as I've been stuck on this for a couple of days already.
>
> > I basically have 3 models involved in this:
>
> > Project:
> >    has_many :members, :through => :memberships, :source => :user
>
> > Membership, which links users to projects
>
> > User:
> >        has_many :projects, :through => :memberships
>
> > Users should be able to search for projects. However, depending on
> > their access level, they can see more or less projects:
>
> > - Admin users can see all projects (public and private). So I got
> > something like this:
> > Project.search options[:q], :page => 1, :per_page => 10
> > Simple and easy, I can handle that.
>
> > - Normal users can only see projects they are member of. How can I do
> > this?
> > I guess (but i could be completely wrong) I need this in my Project
> > index:
> > has members(:id), :as => :member_ids
> > But how can I use it? Or what should I use?
> > Project.search options[:q], :page => 1, :per_page => 10,
> >            :with     => {  }  # member_ids.include?(@user.id)
>
> > - I kept the best for the end : Moderators can view all public
> > projects and all projects they are a member of.It's basically the same
> > as a normal user, with some "OR" condition cream on top of it:
> > Project.search options[:q], :page => 1, :per_page => 10,
> >            :with     => { :private => 0 }  # OR  member_ids.include?
> > (@user.id)
>
> > I'm already using the "OR" trick to search within my contacts but I
> > cant apply it here as it only works when the permission is within the
> > same model:
> > has "IF(view_permission = 0, 0, contact_owner)", :as => :owner, :type
> > => :integer
>
> > Any idea how to deal with moderators and normal users searches?
> > Thanks a lot to everyone for at least reading this. Extra thanks for
> > those who can help!
>
> > PS: In the worst case scenario, is there a way of "unpaginating" the
> > results i get from TS, removing projects that don't match the
> > conditions, then re-paginating? I know that's a terrible solution and
> > I want to avoid it at all costs. However, we'll never have more than
> > 100 projects in the database and I'd rather have a that than no search
> > at all.
>
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Thinking Sphinx" group.
> > To post to this group, send email to [email protected].
> > To unsubscribe from this group, send email to 
> > [email protected].
> > For more options, visit this group 
> > athttp://groups.google.com/group/thinking-sphinx?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en.

Reply via email to