0

在我的模型中,我有几个关联,例如:

has_many :posts
has_many :comments, :through => :posts
belongs_to :user

我还有一个方法,我想收集关联的对象,由参数指定:

def selected_associations(*associations)
  associations.collect{|association| self.association}
end

问题是,我如何通过*associations?我试过用一组符号这样做:

self.selected_associations([:posts, :comments])

但这不起作用。也不会将它们作为字符串传递。也许我没有以正确的方式接近这个?

4

1 回答 1

1

这里有两点。

首先,self.association行不通。您需要将其更改为:

def selected_associations(*associations)
  associations.collect{|association| self.public_send(association)}
end

关于方法调用,您需要作为散列传递。

selected_associations :posts, :comments

最好的。

于 2013-03-20T23:58:22.333 回答