ruby-on-rails - Rails - 加入事件记录关系

标签 ruby-on-rails ruby rails-activerecord

我正在尝试跟进 https://guides.rubyonrails.org/active_record_querying.html#specifying-conditions-on-the-joined-tables

我有一个类 ImageCollection,它的状态可以是“事件”。这个类属于一个图像,它有一个名为“workflow_state”的属性。

我有以下工作但需要几秒钟才能执行:

def self.published
  where(status: STATUS_ACTIVE).select { |x| x.image.workflow_state == Publishable::Meta.published_key }
end

以下不起作用:

scope :published, lambda {
  where(status: STATUS_ACTIVE).joins(:image).where(
    'image.workflow_state = ?', Publishable::Meta.published_key
  )
}

并返回:

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'image.workflow_state' in 'where clause': SELECT  `image_containers`.* FROM `image_containers` INNER JOIN `images` ON `images`.`id` = `image_containers`.`image_id` WHERE `image_containers`.`status` = 'active' AND (image.workflow_state = 'published') ORDER BY `image.containers`.`id` ASC LIMIT 1

我很困惑,因为图像表有一个 workflow_state

非常感谢任何帮助

最佳答案

如果您使用的是纯 SQL,则应使用复数形式的表名。

将:image.workflow_state 更改为 images.workflow_state

关于ruby-on-rails - Rails - 加入事件记录关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724562/

相关文章:

ruby-on-rails - 模式迁移的非公共(public)模式

ruby-on-rails - 403 禁止 ~ Bluemix 上的 nginx

ruby-on-rails - 哪个 *nix 用户在 Ruby/Rails 中运行由 "system"执行的命令?

ruby-on-rails - 如果下一个不存在,Ruby 数组重复值,

Ruby gsub 正则表达式意外行为

ruby-on-rails - Rails 5 ActiveRecord - 在使用方法之前检查是否有任何结果

mysql - 安装 Rails、MySQL 等一切都出错了

ruby-on-rails - 在rails中合并两个/三个记录

sql - 在多少种语言中,Null 不等于任何东西,甚至不等于 Null?

ruby-on-rails - 在 ActiveRecord 中查询第一个与部分属性匹配的对象