我需要加入一系列表格:
tables = ["users","cars"]
但是,我正试图加入这些:
joins(:users,:cars)
代码无效。在我的模型中,我有一个定义,我在表中传递:
def conditions(tables)
joins(tables.map { |t| t.to_sym }.join(","))
end
答案 0 :(得分:5)
此方法适用于splat运算符。
.joins
接受一个未定义数量的参数,所以你需要的是一种将数组解构为参数的方法。 .join(",")
会把它变成一个字符串,这不是它所期望的。但是,这个:joins(*tables.map(&:to_sym))
应该可以解决问题。
答案 1 :(得分:1)
您编写的方法是传递字符串"users, cars"
,这会引发错误。使用splat(*
)运算符:
def conditions(tables)
joins *tables.map(&:to_sym)
end
http://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/