我想知道Rails中是否可以使用以下内容。我对Rails很陌生,但它看起来就像是我希望Rails能够实现的那种......
我想知道DB方法(例如find
)是否可以获取对象而自动知道是否在相应的外键列中查找其ID值而未给出该列的名称。
我的具体用例是我想制作一个泛型方法,检查两个模型是否通过连接表相关。
(换句话说,不同的表将链接不同的模型,因此将使用不同的列名。我希望能够传递某些东西[可能是相关类的对象],Rails将知道{{1应在id
列中搜索@sample_model
个SampleModel
个{}}。
所以这个方法就像:
sample_model_id
...并且该方法可以自动知道它在model1_id列中寻找model1.id,在model2_id列中寻找model2.id.
这(或类似的东西)可能吗?如果没有,是否还有其他方法可以实现我的目标(通用连接检查方法)?
答案 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