基本上我试图设置Trainer
注册的日历,如下所示:
@calendar = Calendar.where("current = 1")
@trainer.calendar = @calendar.id
这给了我以下错误:
undefined method `id' for #<Calendar::ActiveRecord_Relation:0x0000000371d128>
为什么会这样?
答案 0 :(得分:2)
以下内容可行:
@calendar = Calendar.where(current: 1)
@trainer.calendar = @calendar.first
Calendar.where("current = 1")
提供了ActiveRecord::Relation::ActiveRecord_Relation_Calendar
个对象。您需要从Calendar
对象中获取ActiveRecord::Relation
对象,然后您可以调用方法#id
。
查看代码,您似乎想要分配Calendar
对象,因此请勿调用#id
方法。
答案 1 :(得分:1)
使用where
,您可以获取一组Calendar
条记录(AR
条件,它是ActiveRecord::Relation
),这些记录符合给定条件而非单条记录。如果您想使用Calendar
找到单一的current = 1
记录,则可以使用:
@calendar = Calendar.find_by_current!(1)
@trainer.calendar = @calendar
答案 2 :(得分:0)
您可以调用ActiveRecord_Relation的方法.values
来获取实际数据。
@calendar = Calendar.where(current: 1).values
为了更好地了解您,您可以查看documentation