Rails - 将对象传递给DB方法

时间:2015-07-14 20:33:15

标签: ruby-on-rails ruby

我想知道Rails中是否可以使用以下内容。我对Rails很陌生,但它看起来就像是我希望Rails能够实现的那种......

我想知道DB方法(例如find)是否可以获取对象而自动知道是否在相应的外键列中查找其ID值而未给出该列的名称。

我的具体用例是我想制作一个泛型方法,检查两个模型是否通过连接表相关。

(换句话说,不同的表将链接不同的模型,因此将使用不同的列名。我希望能够传递某些东西[可能是相关类的对象],Rails将知道{{1应在id列中搜索@sample_modelSampleModel个{}}。

所以这个方法就像:

sample_model_id

...并且该方法可以自动知道它在model1_id列中寻找model1.id,在model2_id列中寻找model2.id.

这(或类似的东西)可能吗?如果没有,是否还有其他方法可以实现我的目标(通用连接检查方法)?

1 个答案:

答案 0 :(得分:1)

此方法应按预期工作:

def self.find_by(obj1, obj2)
  fk_1, fk_2 =
    [obj1, obj2].map { |o| self.reflect_on_association(o.class.to_s.split("::").last.underscore.to_sym).foreign_key }
  self.where(fk_1 => obj1, fk_2 => obj2).last
end