0

我选择

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' 用于#

什么是正确的方法?

4

2 回答 2

3

尝试只使用一个 where 语句,例如

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

或在计划列上明确命名您的查询表,例如

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

我不认为您的 map 方法导致了问题,因为事件的选择发生在 map 方法的调用中,并且您在选择查询中遇到了明显的问题。

于 2013-04-04T11:05:21.353 回答
0

这真的是语法错误:) 'schedule' 而不是 'shedule'

于 2013-04-04T11:47:12.593 回答