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!


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.


Sorry -

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