3

我有以下代码:

  def incoming_acceptation(incoming_code)
    if invite_code == incoming_code
      accepted = true
      self.save
      true
    else
      false
    end
  end

但它不会改变并保存接受为真,它保持在以前的状态,假。

@i.incoming_acceptation(incoming_code) => true
@i.accepted => false
4

2 回答 2

6

我建议:

def incoming_acceptation(incoming_code)
  update_attribute(:accepted, true) if invite_code == incoming_code
end

update_attribute将更改并保存该属性。还有update_attributes(注意s)接受 Hash 以一次更改多个属性:

@obj.update_attributes(:accepted => true, :accepted_at => Time.now)

注意:当更改和保存成功时update_attributeupdate_attributes两者都会返回true,就像在您的示例中一样。

于 2010-10-27T11:13:04.483 回答
3
self.accepted = true
于 2010-10-27T10:35:09.517 回答