gpt4 book ai didi

ruby-on-rails - 如何在 ruby​​ on rails 中显示父表列名?

转载 作者:太空宇宙 更新时间:2023-11-03 17:21:41 25 4
gpt4 key购买 nike

如何在 ruby​​ on rails 中显示父表列名?

我想把company_id所在的company_name显示为1,post是子表名,哪里是外键company_id,我想替换company_id所在的company_name。

这是我的作品-

Controller :

@post = Post.paginate(page: params[:page], :per_page => 10).order('job_view_count DESC')

查看:

<% @post.each do |p| %>
<%= p.jpost_title %>
<%= p.company_id %> # I want to show company_name on this place
<%= p.post_location %>
<% end %>

用户模型:

 class User< ActiveRecord::Base
has_many :posts, :foreign_key => :company_id
has_many :companies
end

class Post < ActiveRecord::Base
belongs_to :user
belongs_to :company
end

谢谢

最佳答案

<% @post.each do |p| %>
<%= p.jpost_title %>
<%= p.company.company_name %>
<%= p.post_location %>
<% end %>

保持干燥并停止 law of demeter问题,您需要使用 .delegate 在你的Post型号:

#app/models/post.rb
class Post < ActiveRecord::Base
belongs_to :company
delegate :company_name, to: :company #-> @post.company_name
end

这将允许您使用:

<% @post.each do |p| %>
<%= p.jpost_title %>
<%= p.company_name %>
<%= p.post_location %>
<% end %>

为您提供上下文(以便您了解问题/解决方案),company_id foreign key posts里面表。

外键是一种关系数据库功能 - 它允许数据库通过您提供的键“引用”其他表中的数据:

enter image description here

在你的例子中,company_id表示 idCompany记录你的帖子。你遇到的问题是,当直接调用它时,你会得到一个 integer返回(company_id id)。

要拉取关联对象(IE @post.company),需要依赖ActiveRecord填充它......这就是为什么你应该调用@post.company (IE post belongs_to company) 以访问其 name 等属性等:

@post.company_id #-> 1
@post.company.company_name #-> "Test"

使用 delegate将您的特定请求推送到 company对象,允许您调用 @post 上定义的方法直接反对。

关于ruby-on-rails - 如何在 ruby​​ on rails 中显示父表列名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34692274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com