您如何实现基于请求模型搜索表的方法?
我有一个User和Vehicle表,它们都分配了存储在Equipment表中的设备。 我正在尝试使用相同的方法显示分配给用户和车辆的设备。 Equipment表有一个user_id和vehicle_id,显示设备的分配位置。
是否有任何方法可以传入表变量(可以是用户或车辆),然后将该variable_id:作为搜索条件,以显示分配给用户或车辆的设备,具体取决于哪个显示页面是被人看待 -
def equip(table, id)
equip = Equipment.where(table_id: id)
end
这样传入的表变量替换了where()方法的“table”片段,使其成为user_id或vehicle_id?
答案 0 :(得分:1)
正如Mr.Yoshiji所说,这是可能的,但我强烈建议改为polymorphic associations。
答案 1 :(得分:0)
是的,有可能:
def equip(table, id)
equip = Equipment.where("#{table}_id = ?", id)
end
但这可能导致错误很快,在之前添加一些检查内容:
def equip(table, id)
if self.columns.map(&:name).include?("#{table}_id")
equip = Equipment.where("#{table}_id = ?", id)
else
# the columns does not exists!
end
end
说明:
self.columns.map(&:name) # returns the name of all the columns of the model in a array
我的Rails控制台的一个例子:
User.columns.map(&:name)
=> ["id", "username", "profession_id", "external_reference", "authorisation_group", "created_at", "updated_at", "active", "license", "visible"]