我大致與MickJ認同,雖然已經建立的公司和用戶模型/桌(這顯然在每個ID列)我會做它:
create_table "companies" do |t|
t.string "name"
...
end
create_table "positions" do |t|
t.references "user"
t.references "company"
...
end
create_table "followings" do |t|
t.references "user"
t.references "company"
...
end
型號:
class User
has_many :positions
has_many :followings
end
class Company
has_many :positions
has_many :followings
end
class Position
belongs_to :user
belongs_to :company
end
class Following
belongs_to :user
belongs_to :company
end
你可以做參考公司從位置:
position = Position.first
puts position.company.name
或通過類似的用戶
user = User.first
user.positions.each do |position|
puts position.company.name
end
- EDIT1:
從位置提取的公司名稱到一個單獨的表你最好關閉寫一個小耙子任務 - 是這樣的:
Position.all.each do |position|
company = Company.find_or_initialize_by_name(position.company_name)
position.company_id = company.id
position.save
end
然後你可能希望編寫一個遷移以從職位表中刪除公司名稱列...只是爲了保持整潔。
「我如何安全地從我的職位表中提取公司專欄並保留職位/公司關係?」。只需創建一個名爲company的新表,其中包含'company_id'和'company'列。然後只需從「職位」表中刪除公司專欄。 – MickJ
好的,但我需要的是其他所有的位置ID。有沒有一個簡單的低風險的方式呢? – keypulsations
爲position_id添加一列,併爲其創建一個dbs序列。寫一個小腳本或一個過程,以從序列中填充它。然後一旦它完全填充,添加約束它是唯一的。 – MickJ