Conditions => Or instead of AND


I have in my User model.

Let's step back a bit.

belongs :groups

I think you mean   belongs_to :group

This means that AR is expecting your User table to have a foreign key to the Group table with the name group_id

With this association a user is associated with a single group.

I want to put condition on it so it end of like this

SELECT * FROM groups WHERE (groups.user_id = 2 OR (groups.user_id is NULL) I thought this would do that

belongs :groups, :conditions => ["groups.user_id is NULL"]

The condition on an association declaration adds additional restrictions on what will be returned on the query. with a belongs_to :group association, you get a group (not groups) method which returns at most one group. If effectively does Group.find(group_id).

It seems like you're modeling this wrong.

What are the real-world relationships between user and groups?

If a group can have more than one user (seems likely) then you want a has_many relationship back to user. This still would not requre a user_id column in group.

If, on the other hand, you want some groups to belong to a single user then group should have a belongs_to :user, and a user_id column

If the user table has a user_id column then to find groups which belong to either a particular user or no-one you can do something like:

Group.find(:all, :conditions => ["user_id IS NULL OR user_id = ?",])