1
除了this問題的幫助,我終於有了很多通過關係工作。有許多通過選擇主鍵和外鍵
不幸的是,因爲我正在使用遺留數據庫,所以我無法使用默認的rails連接方法,因此需要更改列名稱和字段值。
我有兩個模型:raduser和radgroup,他們通過radusergroup加入。下面的模型。
我可以讓連接使用鍵raduser_id和radgroup_id工作。我需要做的是分別將這些更改爲用戶名和組名。
不是表看起來像這樣的:
+---------------------------+---------------------------+----------+----+
| raduser_id | radgroup_id | priority | id |
+---------------------------+---------------------------+----------+----+
| 33 | 2 | 1 | 21 |
| 33 | 1 | 1 | 20 |
| 32 | 3 | 1 | 25 |
+---------------------------+---------------------------+----------+----+
我需要它看起來像這樣:
+---------------------------+---------------------------+----------+----+
| username | groupname | priority | id |
+---------------------------+---------------------------+----------+----+
| jenny | staff | 1 | 21 |
| steve | sports | 1 | 20 |
| ianw | travel | 1 | 25 |
+---------------------------+---------------------------+----------+----+
我試着在我的模型以下,但到目前爲止,它是不成功的。
class Raduser < ActiveRecord::Base
has_many :radusergroup, :dependent => :destroy, :primary_key => :groupname, :foreign_key => :username
has_many :radgroup, :through => :radusergroup
end
class Radusergroup < ActiveRecord::Base
belongs_to :raduser, :foreign_key => 'groupname', :primary_key => 'username'
belongs_to :radgroup, :foreign_key => 'username', :primary_key => 'groupname'
end
class Radgroup < ActiveRecord::Base
set_table_name 'radgroup'
has_many :radusergroup, :dependent => :destroy, :primary_key => :groupname, :foreign_key => :username
has_many :raduser, :through => :radusergroup
end
什麼是正確的方法來做到這一點?
- 更新 -
表單代碼:
- Radgroup.all.each do |radgroup|
= check_box_tag "raduser[radgroup_ids][]", radgroup.id, @raduser.radgroup.include?(radgroup), :id => "raduser_radgroup_id_#{radgroup.id}"
= radgroup.groupname
認爲可行。在提交表單時,它仍然會輸入ID。用表單代碼更新了我的問題。我需要改變什麼? Ĵ –