2012-10-23 10 views
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를 저장합니다. 그러나 책 페이지 나던 메이크업 감각에만 사용자 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%> 

지금 소유자 정보에서 i는 사용자의 세부 사항을 표시 할 전망이다. 나는 그것을 표시하는 방법을 모르겠다? 당신이 관계 belongs_to 예를 들면 has_many

줄 경우

답변

0

relatinship

를 참조

지금 당신은 당신이 특정 사용자의 모든 책을 얻을 @user.books를 사용하여 액세스 할 수 있습니다
class User < ActiveRecord::Base 
    has_many :books 
end 

class Book < ActiveRecord::Base 
    belongs_to :user 
end 

사용할 수있는 책을 만들려면

책 테이블의 USER_ID 너무
@user.books.build 

그게 내가 u는 실제 시나리오를 얻을 didnt는 생각 당신은 또한 예를

@user = @book.user 
+0

를 들어, 책을 읽고 세부 사항을 얻을 수 있습니다 자동으로

온다. 실제로 사용자 (상점 키퍼) 로그인이있을 때 사용자의 ID는 새 책을 추가하는 동안 자동으로 책 테이블에 저장됩니다 (상점 주인에게 그의 책 레코드에 추가, 삭제, 편집 권한을 제공했습니다). 내 질문은이 user_id를 통해 사용자 세부 정보 (예 : SUser 테이블의 데이터)를 검색 할 수있는 방법입니다.이 테이블은 devise에서 만든 책 표 n에 저장됩니다. –

+0

나는 또한 장인의 테이블이 다르다는 것과 장사꾼의 테이블이 다르다는 것을 상기시키고 싶다. 또한이 두 테이블 사이에는 일대일 관계가 있습니다. 그리고 테이블과 사용자 테이블 사이의 많은 관계 (devise). –

+0

나는 이것을 이렇게 생각했다. 'v = Book.user_id' 'a = SUser.find_by_user_id (v)' 'b = a.address' –

관련 문제