我正在考慮在has_many關係之間添加一些額外的屬性。雖然在has_many關係中使用時訪問連接表中的額外屬性
例如,我有一個Users表和一個Group表。用戶可以通過has_many關係加入羣組。我想添加用戶在該組中的'角色'屬性。
create_table "groupization", :force => true do |t|
t.integer "user_id"
t.integer "group_id"
t.string "role"
t.datetime "created_at", :null => false
t.datetime "updated_at", :null => false
end
我在想,我怎樣才能訪問角色屬性。我在想這樣的事:
user.groups[0].role
這是一個正確的方法嗎?我知道語法錯了(我試過了);正確的語法會是什麼樣子?謝謝!
我認爲這可以稍微簡化爲'user.groupizations.find_by_group_id(user.groups.first).role'。在Rails 3.1或更新版本中,使用'#first'也應該更快,因爲它將檢索單行,而'#[]'將強制檢索所有記錄。 –
是的,我最初有'user.groups.first',但我改變它以保持與@Newton在問題中如何訪問組。但就像我說的,無法想象爲什麼只有第一組的「角色」會像這樣被任意訪問。 –
我想我雖然不清楚。簡化只是省略了'.id'。您通常可以將模型實例作爲查找器參數傳遞,並且ActiveRecord知道它應該使用該值。 –