2012-10-23 48 views
0

让我解释一下这个场景.. !! 我已经使用设计进行身份验证。在数据库中设计表被命名为“用户”。现在我有另一个名为“book”的表,用于存储用户标识。如何从其他表中检索值?

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%> 

现在下业主的细节,我想显示用户细节的意见。我没有得到如何显示?

回答

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 
+0

我觉得你没有得到实际的场景。实际上,当用户(店主)登录时,用户的ID会自动保存到书桌上,同时添加一本新书(我已提供店主添加,删除,编辑特权到他的书籍记录)。我的问题是,如何通过此user_id(它保存在书本表n中,由devise创建)检索用户详细信息(即SUser表数据)。 –

+0

我也想提醒你,设计的桌子是不同的,店主的桌子是不同的。这两张表之间也有一对一的关系。和表和用户表(设计)之间的多对多关系。 –

+0

我想这样做 'v = Book.user_id' 'a = SUser.find_by_user_id(v)' 'b = a.address' –