为了确定照片是否与指定的宽高比匹配,我使用了:
exif2 = EXIFR::JPEG.new(photo.queued_for_write[:medium].path)
self.featured = exif2.width == 1250 and exif2.height == 833
但是,如果宽度为1250但高度为任何值,则返回true。如果exif2.height不是833,在rails控制台中运行这个确切的命令将返回false。但是,将其更改为下面的if语句是有效的
if exif2.width == 1250 and exif2.height == 833
self.featured = true
else
self.featured = false
end
我不明白为什么,我正在努力学习rails,所以我认为理解它对我很有用。
最佳答案
运算符优先级,and
甚至低于=
所以你的第一个表达式被计算为
( self.featured = exif2.width == 1250 ) and ( exif2.height == 833 )
你的条件是这样评估的
if ( exif2.width == 1250 ) and ( exif2.height == 833 )
. …表明你的不同答案,虽然令人困惑,但并不是因为任何不一致
尽可能使用
&&
而不是and
。关于ruby-on-rails - 为什么在Rails模型中variable = true和false会导致true值,但在控制台中却没有,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15708658/