Ruby on Rails中如何通过border_rot_imports访问关联users表字段
问题解决步骤
1. 修正错误的模型关联
你的现有模型关联命名不符合Rails约定,导致无法直接通过关联调用用户数据,修正为以下代码:
class BorderRotImport < ApplicationRecord belongs_to :issuing_officer, class_name: 'User', foreign_key: :issuing_officer_id end class User < ApplicationRecord has_many :border_rot_imports, foreign_key: :issuing_officer_id end
2. 调用用户字段的方法
修正关联后,任意BorderRotImport实例都可以通过issuing_officer关联直接访问对应用户的所有字段,比如获取username:
@border_rot_import.issuing_officer.username
如果存在用户数据被删除的场景,可以加安全导航符避免空值报错:
@border_rot_import.issuing_officer&.username
3. 列表页性能优化
index页面如果展示多条border_rot_imports数据,建议在controller的index方法中使用includes预加载关联用户数据,避免N+1查询问题:
def index @border_rot_imports = BorderRotImport.includes(:issuing_officer).all end
4. 冗余代码优化
你现有create方法中给issuing_officer_id赋值的代码可以简化,直接关联用户实例即可,不需要手动取id:
# 原代码可替换为下方写法 @border_rot_import.issuing_officer = current_user
内容的提问来源于stack exchange,提问作者DefaultBot
相关产品推荐
相关产品推荐

