ActiveRecord and map in RoR



选择

m_repeats = Event.where(:repeat => 'monthly').where("schedule < ?", date.end_of_month)

然后我需要更改每个元素中的时间表(它是日期字段)。

我试着做:

m_repeats.map{ |elem| elem.schedule.year = date.today.year, elem.schedule.month = date.today.month } 

但是我得到了错误:

Mysql2::Error: Unknown column 'schedule' in 'where clause': SELECT `events`.* FROM `events`  WHERE `events`.`repeat` = 'monthly' AND (schedule < '2013-04-30')

或#

未定义的方法' schedule'

正确的做法是什么?

尽量只使用一个where语句,如

m_repeats = Event.where('events.repeat = ? AND events.schedule < ?', 'monthly', date.end_of_month)

或在schedule列上显式地命名查询表,如

m_repeats = Event.where(:repeat => 'monthly').where("events.schedule < ?", date.end_of_month)

我不认为你的地图方法是造成问题,因为事件的选择发生在地图方法的调用,那里你得到一个明确的问题在你的选择查询

确实是语法错误:)用'schedule'代替'schedule'

最新更新