让我解释一下这个场景.. !! 我使用了设计进行身份验证。数据库中的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%>
现在在所有者详细信息下,我想显示用户详细信息。我没有得到如何显示?
答案 0 :(得分:0)
请参阅此relatinship
如果您提供关系belongs_to
和has_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