ruby-on-rails - Rails 5 ActiveRecord,如何包含关联表中的字段?

标签 ruby-on-rails ruby ruby-on-rails-5

对于 Rails 5,给定模型:

chef_positions
* id
* name

skills
* id
* name

chef_position_skills
* id
* chef_position_id
* skill_id

我有一个 Controller 方法通过 chef_position_id 返回 chef_position_skills:

  def index
    chef_position = ChefPosition.find(params[:chef_position_id])
    render json: chef_position.chef_position_skills
  end

返回:

 [{"id":1,"chef_position_id":2,"skill_id":1,"created_at":"2017-06-05T15:44:06.821Z","updated_at":"2017-06-05T15:44:06.821Z"},{"id":2,"chef_position_id":2,"skill_id":2,"created_at":"2017-06-05T15:44:06.821Z","updated_at":"2017-06-05T15:44:06.821Z"}]

如何让 Controller 执行以下操作:

  1. 为每条记录包含 skill.name
  2. 不包含时间戳

最佳答案

如果您还没有在您的模型中将两者关联起来,则需要先将两者关联起来,chef_positions.rb

has_many :skills, through: :chef_position_skills

然后在你的 Controller 中,

ChefPosition.where(id: params[:chef_position_id]).joins(:skills).select('chef_positions.id, skills.name')

关于ruby-on-rails - Rails 5 ActiveRecord,如何包含关联表中的字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44381564/

相关文章:

ruby-on-rails - 使用 Ruby on Rails 生成模板文档

ruby - 将发布数据传递到 Sinatra 中的其他页面

ruby-on-rails - Rails 5 的 Omniauth-twitter 停止工作! OAuth::Unauthorized 403 Forbidden

ruby-on-rails - Rspec 测试失败,当用户应该被授予访问他拥有的交易的权限时,用户被重定向

ruby-on-rails - 使用 ruby​​ 2.1.0 和 rails 4.2.0 错误创建 Heroku 应用程序

ruby - Capistrano 中的执行、测试和捕获命令有什么区别?

javascript - 按 F5 后首先触发 Youtube iframe API

ruby-on-rails - 邪恶的 PDF 标题没有显示

html - rails : image exists but is not rendered in production even though rendered in development

ruby-on-rails - 有没有更好的方法在 Rails 中创建只读属性?