嘿,我不太确定该怎么称呼,但这是合同。
我试图只在
中将内容分配给我的数据库值此代码的基本版本是:
venue.address = venue_json['address'] if venue.address.blank? && !venue_json['address'].blank?
其中venue
是我的ActiveRecord结果。
这就是我现在所拥有的(好一点)。使用Venue.rb类中的init_value
。
Venue.init_value(venue.address, venue_json['address'])
def self.init_value(record, value)
if record.blank? && !value.blank?
record = value
end
end
我想达到这一点,但实在不知道如何。
venue.address.init_value(venue_json['address'])
特别是因为我喜欢它,它适用于ActiveRecord类的任何属性,而不仅仅是address
值。
答案 0 :(得分:0)
将它分成一个方法听起来是个好主意,但在这种情况下,使用实例方法而不是类方法更有意义。
def init_attribute(attribute, value)
self.update(attribute => value) if self.send(attribute).blank? && value.present?
end
venue.init_attribute(:address, venue_json['address'])
上面代码段的一些快速评论:
update
或update_column
。或者您可以使用分配,然后在对象上调用#save
。Object#present?
,它是ActiveSupport的一部分。Object#send
。