我能够通过两种不同的方法通过我的模型测试。哪个更好?我可以采取哪些方法来确定哪种方法更可取,或者是否更可取?
def queued_video?(video)
queue_items.where(video: video.id).present?
end
对比
def queued_video?(video)
queue_items.map(&:video).include?(video)
end
最佳答案
我假设 queued_items
是一个 ActivreRecord
查询。
我不喜欢第二个,因为它评估所有 queue_items
。第一个效率更高。
你可以使用 any?
而不是 present?
来让它感觉更自然。
我认为您最好的选择是使用 exists?
ActiveRecord
def queued_video(video)
queue_items.exists?(video: video.id)
end
这会导致 select 1
查询
SELECT 1 AS one FROM `table_name` WHERE `table_name`.`video_id` = 123 LIMIT
并以更优雅的方式完全满足您的需求。
关于ruby-on-rails - Rails 模型方法 : which is preferable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27338026/