0

「ツール」と「レンズ」のテーブルがあります。

Rails3を使用していて、貸し出しを作成するときに、ツールの属性ステータスを「U」に変更したいと思います。

これは可能でしょうか?

モデル貸し出しをしてみました

 after_save :change_status

  def change_status
      tools.update_attribute(status, 'U')
  end

私も同じモデルで試しました:

 after_save :change_status

  def change_status
      self.tool.update_attribute(status, 'U')
  end

デバッグログに成功または警告はありません。

推測?

ありがとう!:)

4

2 に答える 2

0

まず、Lendモデルにhas_many:toolsがあると仮定します

tool.update_attributeあなたのようなことをすることができるためには、accepts_nested_attributes_for

これらのリンクを見てください。おそらく正しい道にあなたを導くでしょう:
RailsCasts#196ネストされたモデルフォームパート1
アクティブレコードのネストされた属性

お役に立てれば。

于 2012-08-21T20:37:14.207 に答える
0

貸し出しと道具の関係は?Lend has_manyツールの場合、次のようなことを行う必要があります。

def change_status
  tools.each { |tool| tool.update_attributes(status: 'U') }
end

update_attribute(単数)は間もなく非推奨になるため、update_attributesを使用していることにも注意してください。

ところで、属性を更新するためにツールでメソッドを作成する必要があります。Lendモデルは、ツールを貸し出しとして設定する方法を認識していない必要があります。何かのようなもの

def loaned!
  update_attributes status: 'U'
end
于 2012-08-21T20:52:25.550 に答える