NoMethodError / undefined方法

时间:2010-02-05 21:42:07

标签: ruby-on-rails

我一直得到:StudentsController中的NoMethodError

undefined method `id_num=' for #<Array:0x105adcc98>

我很肯定桌上有一个id_num,它在控制器中出现了:

学生管理员:

def student_test
@student = Student.find(params[:id]) if params[:id]
@student ||= Student.new
run_sequence :testize
end

def test_finalize
Student.transaction do
if @student.update_attributes(params[:student]) && @student.test! 
x = @student.site_id
y = @student.testing_id
book = Book.find(:all, :conditions => ["location_id = ? AND testing_id = ?", x, y])

room = Room.new(:room_num => 5)
room.save

book.id_num = room.id #error occurs here. Book.new would work. But I need to do a find.
book.save
end
end

这可能看起来有点混乱,但因为测试时!在Student模型中调用方法,学生将被分配一个testing_id,我不能 在学生和书之间执行条件,直到为学生分配随机的testing_id值。所以这本书必须经过测试后确定!那是 为什么在那里找到了。

1 个答案:

答案 0 :(得分:7)

当你调用Book.find(:all)时,它会返回一个Books数组。然后你试图在那个数组上设置一个id_num(当然,数组没有这样的属性);大概你只想找一本书并在其上设置id_num。也许你只想要Book.find(:first)?