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。用表单代码更新了我的问题。我需要改变什么? Ĵ –