Только получить данные, где столбец = 0 в Rails - PullRequest
1 голос
/ 05 декабря 2011

У меня есть столбец с 0 или 1. Если столбец содержит 0, я хочу отобразить его в виде.

В моем контроллере у меня есть что-то вроде этого:

def read
    @title = "Something"
    @posts = Post.where('read' == 0)  
end

По какой-то причине он получает все сообщения, даже если read имеет значение 1. Что я мог сделать не так?

Ответы [ 2 ]

2 голосов
/ 05 декабря 2011

Правильная форма Post.where(:read => 0)

Ваша текущая форма сравнивает строку 'read' со значением 0. Если мы введем это сравнение в консоль Ruby, мы увидим, что происходит:

  > 'read' == 0
 => false 

Итак, это сравнение возвращает false. И если вы просто наберете Post.where(false) в консоли, вы увидите, что она возвращает все записи Post, что объясняет, почему вы получаете каждый Post возвращаемый объект. Другими словами, строка в том виде, в каком вы ее напечатали, эквивалентна вводу Post.where(false)

1 голос
/ 05 декабря 2011

Вы используете неправильный формат.Ваш звонок для получения сообщений должен выглядеть следующим образом:

@posts = Post.where(:read => 0)

Попробуйте прочитать документацию activerecord и взгляните на часть Conditions.Если вы указываете хэш-нотацию, вы должны использовать код, который вы использовали бы при создании хэша в Ruby.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...