我想删除并返回AR关系对象中的第一个元素。我使用了shift,但它没有移除对象。
使用普通数组,shift按预期工作:
a = [1, 2, 3]
a.shift # => 1
a # => [2, 3]
这不起作用。变量@attachment_versions
在使用shift
之前和之后保留相同的大小。
@attachment = Attachment.with_associations.find(params[:id])
@attachment_versions = @attachment.attachment_versions
@current_version = @attachment_versions.shift
# this raises `true`
raise @attachment_versions.include?(@current_version).to_s
def self.with_associations
includes(attachment_versions: :owner, comments: [:author, :attachments])
end
我知道AR关系对象不仅仅是一个数组,但我认为shift
应该以相同的方式工作。
答案 0 :(得分:2)
你可以很容易地把它变成一个数组。
即。
@attachment_versions_array = @attachment_versions.to_a
@attachment_versions_array.shift
=> <Attachment_version......etc