Ruby中的复杂关系 - 跨多个表显示数据

时间:2009-04-22 20:19:34

标签: ruby-on-rails ruby

我设计了一个包含20多个表的应用程序,并使用Ruby on Rails。 我正在使用身份验证系统供用户登录。我希望在用户登录时向用户显示可以在多个表中找到的与他相关的信息,这些表之间存在所有可能的关系。我怎样才能在RoR中实现这一目标?我应该考虑使用视图,多个连接吗?我没有设法从一个模型中获取信息,而不是使用经典方法查看表格设计中的两个表格,例如“has many”,“:through”等。

你能分享一下你的知识吗?

谢谢!

2 个答案:

答案 0 :(得分:0)

我假设您的用户模型与包含相关信息的所有表有关系。

假设您可以在UsersController和相应的视图中执行操作。在操作中,您可以找出当前连接的用户是谁,然后从相关模型中获取所需的所有数据。将这些数据返回到视图并根据需要进行渲染。

答案 1 :(得分:0)

我认为你的问题太笼统了,但这里有一些想法......假设你正在制作传统的Rails应用程序

“我应该考虑使用观点吗?”

视图是用户在传统rails应用中看到的内容。因此,如果要向用户显示数据,请使用视图显示控制器中可用的数据。控制器中的每个操作都将从模型中获取数据,并具有相应的视图。

因此,要显示属于用户的书籍,您可能拥有书籍控制器。用户登录后,您在“Books”控制器中有一个“index”操作,其中包含@user_books = @ user.books。在这种情况下,@ user将是您的身份验证系统中的用户对象。用户将拥有许多书籍,并且书籍可能拥有许多用户。然后在您的views / books / index.html.erb文件中,您有类似的内容:

<ul>
<% @user_books.each do |b| %>
  <li> <%= b.name %> </li>
<% end %>
</ul>

打印书名列表。

连接是由Rails自动完成的,所以你不必担心它。但是如果您的应用程序变得非常大并且查询很复杂,您可能必须重写SQL语句以提高可伸缩性....但这显然是一个很好的问题。

希望这有帮助!