Rails:将关联作为参数传递

时间:2013-03-20 23:47:30

标签: ruby-on-rails associations parameter-passing

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

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])

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

1 个答案:

答案 0 :(得分:1)

这里有两点。

首先,self.association无效。您需要将其更改为:

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

关于方法调用,您需要传递哈希。

selected_associations :posts, :comments

最佳。