这个问题已经有了答案:
how rails “update” multiple columns correctly - (updated_at should be updated as well)
3答
我有一个名为Station
的活动记录。我想更新一些属性不是直接的,而是使用一个变量。
类似于:station = Station.where(attr1: "..." , attr2: "...") station.update_attributes(attr1: "...", attr2: "...", ..)
但是当我初始化station
变量时,我得到了activerecord::relation,它没有update_attributes
助手。如何使用变量而不是直接更新Station
中的某些字段?
最佳答案
您应该使用ActiveRecord#find_by
来实现此目标:
station = Station.find_by(attr1: "..." , attr2: "...") # Station first instance with specified attributes
station.update_attributes(attr1: "...", attr2: "...", ..)
如果该方法与属性一起存在,则返回
Station
实例,否则返回nil
实例。如果要查找所有
Station
实例并更新每个实例,则应使用ActiveRecord#update_all
方法:stations = Station.where(attr1: "..." , attr2: "...") #ActiveRecord::Relation
stations.update_all(attr1: "new_attr1" , attr2: "new_attr_2")
关于ruby-on-rails - 使用变量[更新]更新事件记录的属性,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35489226/