0

シナリオを説明させてください..!! 私は認証にdeviseを使用しました。データベース内の Devise テーブルは「user」と名付けられています。これで、ユーザー ID を格納する「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

このユーザーがこの本を利用できることを表示できないように、ユーザー ID を 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

名前、住所、電話番号など、ユーザーの完全な情報を保存します。私が本とユーザーの間に作った関係は、多くの人にとってはマントであり、ユーザーとユーザーにとっては 1 対 1 です。そのため、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%> 

所有者の詳細の下に、ユーザーの詳細を表示したいと思います。表示方法がわかりませんか?

4

1 に答える 1

0

この関係を参照してください

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
于 2012-10-23T11:01:21.243 に答える