我有一个名为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
这是你要求的吗?我没有完全理解这个要求,
亲切的问候
答案 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。