如何在Rails中创建具有多个表的模型?

时间:2014-08-21 14:17:11

标签: mysql ruby-on-rails ruby

在我的Rails应用程序中,我从旧的PHP应用程序链接到MySQL数据库。命名约定不正确,因此我使用self.table_name将模型连接到各自的表。

我需要将多个表中的信息显示为一个资源。所有这些表都具有相同的列结构。我可以创建一个从这些表中提取信息的模型吗?我怎么做?我一直在玩find_by_sql,但还没有取得任何成功

编辑:这只是只读,不需要更新。

1 个答案:

答案 0 :(得分:0)

根据您的问题,我相信您计划从一个特定型号加载其他型号。我的建议是使用多态关系。

class MainModel
  has_many :sub_model, polymorphic: true
end

class Item1
  belong_to :main_model, as: :sub_model
end

class Item2
  belong_to :main_model, as: :sub_model
end

现在在视图中,您必须按如下方式编写数据。

@main_model.sub_model.name |  @main_model.sub_model.value

由于所有其他模型/表具有相同的结构,因此您无需更改属性。

在更新它时,您只需接受sub_models的值作为嵌套属性,它们将更新相应的模型。

有关如何设置多态关系的更多详细信息,请访问Setting up a polymorphic association