0

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

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

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

但是,当我调用 @a.colour 时,我收到一条错误消息,指出方法 'colour=' 不存在。

我从种子中调用@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

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

亲切的问候

4

1 回答 1

1

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

所以你需要遍历所有找到的记录,使用

Status.where(:stat => "Operational").each do |a|
   a.colour = "Green"
end

有关更多信息,请查看Rails ActiveRcord 查询接口指南,它告诉您:

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

于 2013-01-18T10:05:53.093 回答