Rails3:在简单连接中获得“无属性命名...”

时间:2011-03-28 08:14:42

标签: ruby-on-rails-3 activerecord join

我第一次在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错误。

1 个答案:

答案 0 :(得分:2)

它应该是members.created_at :)当您明确使用db表名时,请记住它是由rails约定为复数。