可能重复:
Rails主键和对象id
我的Event
型号中有以下代码
def event_tokens=(ids)
events = ids.split(',')
allowed_events = []
events.each do |i|
i = i.strip
event = Event.where("upper(name) = ?", i.upcase);
if event.present?
allowed_events << event.id #line w/ error
else
print "this doesnt exist, add in staging table " + i.to_s
end
end
self.event_ids = allowed_events
end
上述代码中的event.id
正在抛出警告
警告:对象#id将是不赞成;使用对象#Object_id
当我将event.id
更改为event[:id]
时,我得到了一个错误
符号作为数组索引
event = Event.where("upper(name) = ?", i.upcase);
返回一个集合(从技术上讲,是集合的代理),而不是ActiveRecord对象。
尝试:
events = Event.where("upper(name) = ?", i.upcase)
event = (events.blank? ? nil : events.first)