1

我有一個設置,我希望能夠創建角色記錄以指向用戶技能,場地,製作,組等。has_many?

我把它作爲一個有許多通過與一切順利,雖然屬於一切,這樣的角色和角色關係:

class Role < ApplicationRecord 
    belongs_to :user 
    belongs_to :skill 
    belongs_to :production 
    belongs_to :venue 
    belongs_to :project 
    belongs_to :group 
end 

,並設置單獨作用類別爲這樣:

class Group < ApplicationRecord 
    has_many :users, through: :roles 
end 

除了用戶之外,所有這些都是一樣的,當然這對用戶來說有很多細節。

每個表都有一個名稱字段,一個ID字段和標準時間戳字段。

我將它設置爲索引每個表的名稱。

當我試圖用role_id,user_id和skill_id構建角色作爲記錄時,我在控制檯中找回錯誤,說我需要一切的值。

這是否意味着我必須通過關係爲每種類型的角色建立一個has_many以及它自己的「through」?或者,我可以通過我設想的時尚表格工作來做些什麼?爲什麼它試圖驗證每個字段的數據存在?這是由於索引?

如果我想關閉驗證,我甚至不知道在哪裏放置代碼,因爲我不確定驗證來自何處。

回答

1

Rails 5的默認行爲belongs_to是父關聯必須存在的,所以是的,您需要所有字段才能保存角色。

然而,要關閉此行爲,更改爲:

# config/initializers/new_framework_defaults.rb 
Rails.application.config.active_record.belongs_to_required_by_default = false 
# this would disable this configuration for the entire application 

UPDATE

另一種方法是找出最重要的協會,並確保那些可用,以及設置可選標記在可選的協會,如下所示:

+1

它不會讓我upvote你,因爲我是一個骯髒的NOOB,但謝謝! 跟進:我應該以不同的方式對此進行建模嗎? – Jeremy

+0

更新了答案以添加可選標誌。我認爲這可能是一個更好的方法 – oreoluwa

+0

如果你不能upvote,你可以接受答案,如果它解決了你的問題 – oreoluwa