ruby-on-rails - JSON模型中的条件测试
问题描述
在定义 json 对象时,我需要知道如何在 rails 方法中添加条件 if 测试:
def save_metadata
if model.class == Medium && file.present? && file.content_type.end_with?( 'jpeg' )
exif_info = EXIFR::JPEG.new( url_or_path )
if exif_info.gps.nil?
model.metadata = {
width: exif_info.width,
height: exif_info.height,
image_width: exif_info.image_width,
image_length: exif_info.image_length,
if exif_info.date_time.utc?
date_time_original: exif_info.date_time.utc
}
else
model.metadata = {
width: exif_info.width,
height: exif_info.height,
make: exif_info.make,
model: exif_info.model,
date_time_original: exif_info.date_time.utc,
image_width: exif_info.image_width,
image_length: exif_info.image_length,
gps_latitude: exif_info.gps.latitude,
gps_longitude: exif_info.gps.longitude,
gps_date_stamp: format_date( exif_info ),
gps_time_stamp: format_date_time( exif_info )
}
end
model.save!
end
end
我想测试exif_info.date_time.utc是否不为零,我收到此错误:
语法错误,意外 ':',期待关键字结束 date_time_original: exif_info.date_time.utc
解决方案
您看到的错误是因为您if
在构建Hash
. 您可以在获得哈希后执行此操作。您可以有条件地在哈希中设置键的值,如下所示:
if exif_info.gps.nil?
model.metadata = {
width: exif_info.width,
height: exif_info.height,
image_width: exif_info.image_width,
image_length: exif_info.image_length,
}
model.metadata[:date_time_original] = exif_info.date_time.utc if exif_info.date_time.utc?
else
model.metadata = {
width: exif_info.width,
height: exif_info.height,
make: exif_info.make,
model: exif_info.model,
date_time_original: exif_info.date_time.utc,
image_width: exif_info.image_width,
image_length: exif_info.image_length,
gps_latitude: exif_info.gps.latitude,
gps_longitude: exif_info.gps.longitude,
gps_date_stamp: format_date( exif_info ),
gps_time_stamp: format_date_time( exif_info )
}
end
推荐阅读
- database - 服务器与数据库的通信
- unity3d - 如何重置 IEnumerator 变量?
- flutter - 错误:检测到 0 个或 2 个或多个 [DropdownMenuItem] 具有相同的值 I/flutter (18363):'package:flutter/src/material/dropdown.dart':
- vb.net - 在 Visual Basic 中将一个窗体的值转换为另一个窗体
- coq - 不是形式 A -> A 的共归纳?
- python - 使用 selenium 进行比赛的元素不可见
- ssl - 似乎无法通过 Atom 编辑器远程 FTP 连接到 FTPS
- node.js - 猫鼬 @set 和 $unset 条件
- r - R中有没有办法按“运行”分组?
- c++ - 从父类的向量访问子类函数而不向下转换