1

我有一组需要加入的表:

tables = ["users","cars"]

但是,我正在尝试加入这些:

joins(:users,:cars)

代码不起作用。在我的模型中,我有一个定义,我在其中传递表格:

def conditions(tables)
    joins(tables.map { |t| t.to_sym }.join(","))
end
4

2 回答 2

5

对于 splat 运算符,此方法将是一个很好的候选者。

.joins接受未定义数量的参数,因此您需要一种将数组解构为参数的方法。.join(",")会将它变成一个字符串,这不是它所期望的。但是,这:joins(*tables.map(&:to_sym))应该可以解决问题。

于 2013-02-26T19:13:45.943 回答
1

您编写的方法是传递一个 string "users, cars",这将引发错误。使用 splat( *) 运算符:

def conditions(tables)
  joins *tables.map(&:to_sym)
end

http://endofline.wordpress.com/2011/01/21/the-strange-ruby-splat/

于 2013-02-26T19:13:53.613 回答