@matched = [1, 2, 3]
其中每个整数表示Inventory
类中ActiveRecord对象的id。下一步,我想查看每个对象并获取父User
的电子邮件,但我不知道该怎么做。理想情况下,我会写一些类似的东西:
Inventory.where(id: @matched).user.email
因为当然,如果我只有一个id
可以查找,那么这句话就可以了。由于这不起作用,我反而这样做了
@email = []
@matched.each do |i|
@email << Inventory.find_by_id(i).user.email
end
只是想知道是否有更简单的方法。
谢谢!
答案 0 :(得分:2)
如果您只需要电子邮件地址,则可以使用pluck
方法:
Inventory.where(id: @matched).joins(:user).pluck("users.email")
答案 1 :(得分:0)
class Inventory
def self.with_ids(ids)
sql = @matched.map{|id| "id = #{id}"}.join(" OR ")
where(sql)
end
def parent_email
user.email
end
end
Inventory.with_ids(@matched).map(&:parent_email)