我有两个模型:User
如下Location
:
class User < ActiveRecord::Base
attr_accessible :location, :password, :user_name, :password_confirmation
validates :location, :user_name, :presence => true
validates :password, :presence => true, :confirmation => true
has_one :location, :foreign_key => 'location'
end
class Location < ActiveRecord::Base
attr_accessible :loc_id, :loc_name
belongs_to :user, :foreign_key => 'loc_id'
end
您可以看到我为模型使用了自定义的 foreign_key。我使用表单生成器来构建用户注册表单,但是当我提交数据时出现错误:
Location(#2170327880) expected, got String
我simple_form
用来构建表单,相关代码是:
= f.input :location, :collection => Location.all.collect {|c| [c.loc_name, c.loc_id]}
我该如何解决这个问题?location_id
或者我必须像关联一样使用默认的 foreign_key吗?
谢谢。
更新:
当我将模型中的location
字段重命名为并删除这样的:User
loc_id
:foreign_key
class User < ActiveRecord::Base
attr_accessible :loc_id, :password, :user_name, :password_confirmation
validates :loc_id, :user_name, :presence => true
validates :password, :presence => true, :confirmation => true
has_one :location, :foreign_key => 'location'
end
class Location < ActiveRecord::Base
attr_accessible :loc_id, :loc_name
belongs_to :user
end
它工作正常。但我仍然想知道如何关联User
和Location
模型。
PS我使用Location
模型来存储国家代码和国家名称,永远不会更新User
。