2014-04-24 82 views
1

處理查看的配置文件表。我有一個問題設置它,這是正確的嗎?我對has_many和has_one的關係感到困惑。因爲這是一個對每個訪問關係都有一排的表,所以我決定去用has_one。在rails關係數據庫中創建並強制執行has_one關係

這看起來是否正確,還有沒有辦法強制ActiveRecord中的關係?

模型

class ViewedProfile < ActiveRecord::Base 
    validates :viewed_profile_id, presence: true 
    validates :profile_id, presence: true 
    has_one :profile_id 
    has_one :viewed_profile_id 
end 

遷移

class CreateViewedProfile < ActiveRecord::Migration 
    def change 
    create_table :viewed_profiles do |t| 
     t.integer :profile_id 
     t.integer :viewed_profile_id 
    end 
    end 
end 

編輯

而且當我去我的控制檯和I型ViewedProfile沒有出現。任何想法爲什麼? = c架構通常應該顯示出來!

回答

6

首先,你的條款之間迷糊中Model名稱和attributes(specially Foreign keys)。型號將有屬性協會將被設置爲模式

你必須設置你的模型像這樣

class ViewedProfile < ActiveRecord::Base 
    has_one : profile 
end 

Class Profile < ActiveRecord::Base 
    belongs_to :viewed_profile 
    validates :viewed_profile_id, presence: true 
    validates :viewed_profile_id, uniqueness: true 
end 

而且你相應的遷移文件應該是這樣的

class CreateViewedProfile < ActiveRecord::Migration 
    def change 
    create_table :viewed_profiles do |t| 
     t.string :name 
    end 
    end 
end 

class CreateProfile < ActiveRecord::Migration 
    def change 
    create_table :profiles do |t| 
     t.integer :viewed_profile_id 
    end 
    end 
end 

我建議在開始之前仔細閱讀本指南的文章。

Associations

Migrations

Validations

+0

如果'belongs_to' /'has_one'是真正的你想你還需要添加'viewed_profile_id'唯一索引的關係'profiles',否則沒有什麼能夠阻止多個'個人資料'擁有相同的'viewing_profile_id' – kittyminky