More than one criteria in business logic...

Hello all!

I'm looking to get some help answering a design problem I'm facing. I'm
definitely familiar with how models house all the business logic, but
when it RoR, I'm somewhat confused :slight_smile:

If I have Users, and they have a HABTM relationship to Messages:

Users
o ID
o Name

Messages
o ID
o Body
o Public

Users_Messages
o User_ID
o Message_ID

What is the best practice to check two criteria for a kind of
authorization check?
The first being simply evaluating the HABTM relationship using
user.messages.
The second being that a user can see all messages where Public==true?

Both are separate, yet I want to be able to generate one list from these
two separate criteria in one call, mixing the results.

Hopefully I'm clear enough, thanks in advance for any help!

Hi,

why not add a named scope to messages:

named_scope :public, :conditions => {:public => true}

So you can call either:
user.messages
messages.public
or
user.messages.public

Is that what you're looking for?

Also, I think the standard for join tables is to name them in
alphabetical order, so messages_users.

Gavin

Sorry -

That should have been, Message.public, not messages.public.
named_scope adds a class method