这个问题已经有了答案:
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/

10-09 02:04