ruby – 将查询从视图移动到模型
发布时间:2020-12-17 04:17:32 所属栏目:百科 来源:网络整理
导读:我有两个非附加模型 – 里程碑和用户. (我的里程碑实际上属于公司,公司有许多里程碑.) 每个里程碑都有一个负责它的用户 – 在我的里程碑表单中,我使用以下内容来查找和选择用户: %= f.input :milestone_user,:as = :select,:collection = User.find(:all,:o
我有两个非附加模型 – 里程碑和用户. (我的里程碑实际上属于公司,公司有许多里程碑.)
每个里程碑都有一个负责它的用户 – 在我的里程碑表单中,我使用以下内容来查找和选择用户: <%= f.input :milestone_user,:as => :select,:collection => User.find(:all,:order => "name ASC") %> 这给了我一个user_id,我在一个视图中将其转换为名称,如下所示: <%= User.find(milestone.milestone_user).name %> 这工作正常,但我现在想在几个视图中使用它,不喜欢在我的视图中查询. 我试图将其移动到我的用户模型中,但我不知道如何去做.我在模型中试过这个: scope :username,lambda { where("id = milestone_user")} 这在我看来: <%= User.username.first_name %> 但它抱怨first_name的未定义方法.. 提前致谢 解决方法
将其添加到您的Milestone模型:
def username User.find(milestone_user).try :name end 并在您的视图中使用它: <%= milestone.username %> 但这不是有效的,更好的方法是坚持belongs_to:user,:foreign_key => “milestone_user”,:class_name => Milestone模型中的“用户”.您不必填写关联,您仍然可以在没有分配用户的情况下创建里程碑. belongs_to还允许您在视图中使用这样的代码: <%= milestone.user.name %> 无需为您要访问的每个用户属性创建其他方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |