Rails3: Получение «без атрибута с именем ...» в простом соединении - PullRequest
0 голосов
/ 28 марта 2011

Я пытаюсь join в Rails 3 впервые, и не могу заставить работать самую основную вещь, поэтому, должно быть, упускаю что-то важное. Учитывая

class Member < ActiveRecord::Base
  belongs_to :status
  ...
end

class Status ActiveRecord::Base
  has_many :members
  ...
end

когда я пытаюсь использовать соединение, тестирую в консоли пример, адаптированный из Rails Guides

time_range = (Time.now.midnight - 1.day)..Time.now.midnight 
Status.joins(:members).where('member.created_at' => time_range)

Я получаю сообщение об ошибке,

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'member.created_at' in 
  'where clause': SELECT `statuses`.* FROM `statuses` INNER JOIN `members` ON 
  `members`.`status_id` = `statuses`.`id` WHERE (`member`.`created_at` BETWEEN 
  '2011-03-26 23:00:00' AND '2011-03-27 23:00:00')

Обе модели do имеют created_at столбцы, и это работает: Member.where(:created_at => time_range). Я пробовал несколько перестановок и использовал разные столбцы, но каждый раз при попытке соединения получаю одну и ту же ошибку Unknown column.

1 Ответ

2 голосов
/ 28 марта 2011

Это должен быть members.created_at :) Когда вы явно используете имя таблицы db, помните, что оно во множественном числе согласно соглашению rails.

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