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 at
> http://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.