0

Statusというモデルがあり、StatとColourの2つの列を持つテーブルを処理しています。

これらの列もモデルメソッドであるため、以下がエラーなしで機能することを期待します

@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 Query Interface guideを確認してください。次のように説明されています。

検索に条件を追加したい場合は、Client.where("orders_count = '2'") のように、条件を指定するだけです。これにより、orders_count フィールドの値が 2 であるすべてのクライアントが検索されます。

于 2013-01-18T10:05:53.093 に答える