我第一次在Rails 3中尝试join
,并且无法获得最基本的工作,所以必须缺少一些重要的东西。给定
class Member < ActiveRecord::Base
belongs_to :status
...
end
class Status ActiveRecord::Base
has_many :members
...
end
当我尝试使用连接时,在控制台中测试一个改编自Rails指南的示例
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')
两个模型做都有created_at
列,这可行:Member.where(:created_at => time_range)
。我尝试了几种排列并使用了不同的列,但每次尝试连接时都会出现相同的Unknown column
错误。
答案 0 :(得分:2)
它应该是members.created_at :)当您明确使用db表名时,请记住它是由rails约定为复数。