2013-09-24 41 views
0

我继承了相当怪异的表格布局:belongs_to的不同字段名

callbacks 
id, note, user 

admin 
id, name, password 

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

我有admin的模型被称为users

我怎么会去吗?

回答

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 
+0

谢谢!我原本想这样做,但我不确定这是否是一种非常“轨道式”的方式,并且想知道是否可以使用'belongs_to'方法 – andy

+0

可以使它与'belongs_to'配合使用主键,但如果你想使用'user'作为关联的名字,你需要重写默认方法 – tihom

+0

有趣的,谢谢!这是一个如此尴尬的布局,但这个作品很好:) – andy