Belongs_to不同的字段名称

时间:2013-09-24 08:27:11

标签: ruby-on-rails

我继承了一个奇怪的表格布局:

callbacks
id, note, user

admin
id, name, password

在回调中,用户设置为admin的名称而不是实际的ID。现在我需要能够调用callbacks.user并让rails用该名称查找管理员,然后将其绑定到该记录。

我有admin的模型,名为users

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您可以覆盖默认方法。

def user
  User.find_by_name(user_name)
end

def user=(obj)
  self.user_name = obj.name
end

def user_name
  self[:user]
end

def user_name=(name)
  self[:user] = name
end

其他选项,为了使其与belongs_to一起使用,有primary_key选项,但需要使用与属性user不同的名称

 # Callback.rb
 belongs_to :user_model , :class => "User", :foreign_key => :user, :primary_key => :name

 # User.rb
 has_one :callback , :foreign_key => :user, :primary_key => :name