Rails模型关联问题,如何自主关联?

我有两张表,一张是User, 里面有id, name, email

另一张是Student, 里面有id, who_id

请问我如何才能建立StudentUser的模型关联。

使我最终可以使用

Student.find(id).name, Student.find(id).email

而不是使用

User.find(student.who_id).name, User.find(student.who_id).email

来获取数据?

PS:基于某种原因,我无法将Student中的who_id改为user_id,所以rails g migration 时使用 user:references此法不行。


class User < ActiveRecord::Base
end

class Student < ActiveRecord::Base
end
阅读 3.4k
1 个回答
class Student
  belongs_to :user, class_name: 'User', foreign_key: 'who_id'
end

正常情况想获取 name, 需要 Student.find(student_id).user.name。如果想直接获取 user name, 可以给 Student 加 delegate 方法。如

class Student
  belongs_to :user, class_name: 'User', foreign_key: 'who_id'
  delegate :name, to: :user
end
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题