Rails3.2未定义的方法

时间:2013-01-18 10:00:48

标签: ruby-on-rails-3 activerecord

我有一个名为Status的模型,它处理一个包含两列Stat和Color的表。

由于这些列也是模型方法,因此我希望以下内容可以正常工作

@a = Status.where(:stat => "Operational")
@a.colour = "Green"

然而,当我调用@ a.colour时,我收到一条错误,指出方法'color ='不存在。

我在种子内部打电话给@ a.colour。这只是一个模型,它没有控制器。

我做错了什么?

- 编辑 -

模型

class Status < ActiveRecord::Base
end

架构

  create_table "statuses", :force => true do |t|
    t.string   "stat"
    t.string   "colour"
    t.datetime "created_at", :null => false
    t.datetime "updated_at", :null => false
  end

这是你要求的吗?我没有完全理解这个要求,

亲切的问候

1 个答案:

答案 0 :(得分:1)

我认为Status.where()会返回多条记录。所以你试图在一个显然不存在的数组上调用color=方法!

所以你需要使用

迭代所有找到的记录
Status.where(:stat => "Operational").each do |a|
   a.colour = "Green"
end

有关详细信息,请查看Rails ActiveRcord Query Interface guide,它会告诉您:

  

如果您想为查找添加条件,您可以在那里指定它们,就像Client.where(“orders_count ='2'”)一样。这将找到所有客户端,其中orders_count字段的值为2。