如何从其他表中检索值?

时间:2012-10-23 09:56:56

标签: ruby-on-rails-3.2

让我解释一下这个场景.. !! 我使用了设计进行身份验证。数据库中的Devise表被命名为“user”。现在我有另一个名为“book”的表,用于存储用户ID。

class CreateBooks < ActiveRecord::Migration
def change
create_table :books do |t|
  t.integer "user_id", :limit =>5
  t.string "book_name", :limit => 50
  t.integer "edition", :limit => 5
  t.string "author", :limit => 30
  t.string "branch", :limit => 30
  t.string "publisher", :limit => 50
  t.integer "year", :limit => 10     
  t.text "details"
  t.timestamps
end
add_index :books, "user_id"
end
end

我将userid存储在book表中,这样我就无法显示该书可供该用户使用。但是只显示书页上的用户ID没有意义,所以我创建了另一个名为s_user的表,

class CreateSUsers < ActiveRecord::Migration
def change
create_table :s_users do |t|
  t.integer "user_id", :limit => 5
  t.string "fullname", :limit => 25            
  t.string "email", :default => "", :null => false
  t.string "hashed_password", :limit => 40
  t.string "salt", :limit => 40
  t.string "address",:limit => 25
  t.text "details"
  t.timestamps
end
add_index :s_users, "user_id"
end
end

存储用户的完整信息,如他/她的姓名,地址,电话号码。 我在书和用户之间建立的关系很多,一对一的用户对s_user。 所以我没有得到如何显示存储在s_user表中的用户信息。 我在这里写的是什么 在控制器中

@books = Book.all

在视图中

                     <tr>
                        <th>S.No</th>
                        <th>Book Name</th>
                        <th>Year </th> 
                        <th>Owner id</th>
                        <th>Owner Details</th>
                    </tr>
                  </thead>
                  <tbody>
                    <% @books.each do |b| %>                                        
                    <tr>
                        <td><%= b.id%></td>
                        <td><%= b.book_name%></td>
                        <td><%= b.year%></td>
                        <td><%= b.user_id%></td>

                    </tr>                                               
                    <%end%> 

现在在所有者详细信息下,我想显示用户详细信息。我没有得到如何显示?

1 个答案:

答案 0 :(得分:0)

请参阅此relatinship

如果您提供关系belongs_tohas_many

例如

class User < ActiveRecord::Base
  has_many :books
end

class Book < ActiveRecord::Base
  belongs_to :user
end

现在您可以使用@user.books访问该特定用户的所有图书

用于创建书籍,您可以使用

@user.books.build

因此,在您的图书表中,user_id会自动出现

您还可以从图书中获取用户详细信息,例如

@user = @book.user
相关问题