與所有權相同。僅存儲兩張相關表的標識
假設我已經有兩個型號:
person name:string
dog name:string
現在我需要有第三個表 - 所有權。
在一個正常的關係數據庫中,我只需要存儲這些表中的兩個id,但是rails自動生成它們。那麼我怎樣才能引用它們呢?
rails generate model Ownership XXXXXXXX
與所有權相同。僅存儲兩張相關表的標識
假設我已經有兩個型號:
person name:string
dog name:string
現在我需要有第三個表 - 所有權。
在一個正常的關係數據庫中,我只需要存儲這些表中的兩個id,但是rails自動生成它們。那麼我怎樣才能引用它們呢?
rails generate model Ownership XXXXXXXX
您可以建立一個關係模型,如下所示:
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" #
# ...
你想要的是has_:through關係或者has_and_belongs_to_many關係。檢查文檔的更多信息(你可以找到關於如何建立數據庫和關係的詳細說明。)它是在軌標準的問題: http://guides.rubyonrails.org/association_basics.html
謝謝。我不知道我可以創建一個只有引用的模型 – pk028382