2017-02-11 45 views
1

與所有權相同。僅存儲兩張相關表的標識

假設我已經有兩個型號:

person name:string 
dog name:string 

現在我需要有第三個表 - 所有權。

在一個正常的關係數據庫中,我只需要存儲這些表中的兩個id,但是rails自動生成它們。那麼我怎樣才能引用它們呢?

rails generate model Ownership XXXXXXXX 

回答

2

您可以建立一個關係模型,如下所示:

rails generate model ownerships person:references dog:references 
rails db:migrate 

應用程序/模型/ ownership.rb:

class Ownership < ApplicationRecord 
    belongs_to :person 
    belongs_to :dog 
end 

應用程序/模型/ person.rb:

class Person < ApplicationRecord 
    has_many :ownerships 
    has_many :dogs, through: :ownerships 
end 

現在你可以做:

john = Person.create(name: 'John') 
doggy = Dog.create(name: 'Doggy') 

john.dogs << doggy 

而你只是增加了一個狗約翰的所有權。你可以找到他們是這樣的:

puts john.dogs.first.name 
# => "Doggy" 

如果你看看你產生schema.rb:

create_table "ownerships", force: :cascade do |t| 
    t.integer "person_id" # Here are your two ids 
    t.integer "dog_id"  # 
    # ... 


我建議你經歷 Rails Tutorial by Michael Hartl。在最後一節中,他以非常詳盡的解釋來實現關係模型。

+1

謝謝。我不知道我可以創建一個只有引用的模型 – pk028382