1

나는 Tool 하나 User가 소유하지만, 그것을 소유 한에 포함하여 많은 Users 사용할 수 있습니다 UsersTools과 시나리오를 모델링하고 있습니다.ActiveRecords [사용자]를 has_many belongs_to [뭔가] [사용자]

owner_id 열을 Tools에 추가하고 has_many 사용자라고 말하거나 새로운 relationsship 테이블을 추가하려고 생각했습니다.

저는 Rails에 처음으로 익숙합니다. 모델에 올바른 연관성을 설정하는 데 문제가 있습니다. 올바른 방향으로 나를 가리킬 수 있습니까?

대단히 감사합니다.

답변

3

Tools 테이블에 owner_id을 추가해야합니다. 연관성이 그렇게 될 것입니다.

class User < ActiveRecord::Base 
    has_and_belongs_to_many :tools 
end 

class Tool < ActiveRecord::Base 
    has_and_belongs_to_many :users 
    belongs_to :owner, :class_name => 'User' 
end 

당신은 HABTM-연결을 사용하기 위해 tools_users 표가 필요합니다. 마이그레이션을 생성하고 옵션으로 id: false과 두 개의 열 user_idtool_id 테이블을 만들 :

class CreateToolsUsersTable < ActiveRecordMigration 
    def change 
    create_table :tools_users, id: false do |t| 
     t.integer :tool_id 
     t.integer :user_id 
    end 
    end 
end 

당신이 @user.tools 같은 것을 호출 할 수 있습니다 또는 @user.ownerthere

+0

더 빠른 답장을 보내 주셔서 감사 읽고 그 후를. 어떻게 하나의'User'가 소유하고있는'Tool'에 대해서''User''에서 사용할 수있는 모델링을 할 것인가? 지금 당장은 하나의 '사용자'만 사용할 수 있습니다. 그렇지 않습니까? – fuji

+0

메신저로 테스트를 해본 적이 없으므로 모르겠지만 소유자를'@tool.owner = @ user'로 정의 할 수 있고 평소 사용자를'@tool.users << @ user' 도구에 추가하고 싶다면 . 오, 대신에'belongs_to : user' 대신에'has_many_and_belongs_to_many : users' association이 필요합니다 –

+0

habtm-association을 사용하려면 tools_users 테이블이 필요합니다. 마이그레이션을 생성하고 옵션 ID : false 및 user_id 및 tool_id 두 열을 가진 테이블을 만듭니다. – theodorton

0

사용자 도구

내가 할 것 인 것이다 많은 사용자

을 가지고 소유자의 도구가 사용자에게 속한 많은 도구가 있습니다. 액티브 레코드를 사용하지 않기 때문에 문언이 확실하지 않지만 다른 오옴에서는 작동하는 방법입니다.

관련 문제