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