【问题标题】:Ruby Rails - save vs update where methodRuby Rails - 保存与更新 where 方法
【发布时间】:2012-04-16 12:48:57
【问题描述】:

我正在尝试创建一个库存系统,我的表默认将索引“id”作为主键。我的库存编号应该是唯一值以在表中创建新条目,如果库存已经存在,那么它将更新属性。如何做到这一点?通过将库存编号作为主键?或者有什么方法可以检查和更新已经存在的库存?

【问题讨论】:

    标签: ruby ruby-on-rails-3


    【解决方案1】:

    您可以拥有唯一字段number(例如)。比你可以使用find_or_create_by_<field_name>dirty 方法。

    @ticket = Ticket.find_or_create_by_number(503)
    

    更新:

    @ticket.attrib = 'new attribute value'
    @ticket.save
    

    @ticket.update_attribute :attrib, 'new attribute value'
    

    【讨论】:

    • 感谢 ck3g!此方法是否也会更新现有记录?
    • 如果 Ticket 已经存在,这个方法就抓住它。如果不存在则创建。之后你可以使用update_attribute,保存等。
    【解决方案2】:

    这有效:create_or_update method in rails

    my_class = ClassName.find_or_initialize_by_name(name)
    
    my_class.update_attributes({:street_address => self.street_address,.....})
    

    【讨论】:

      猜你喜欢
      • 2019-02-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多