Rails 4 - 带有外键的模型的子句

时间:2014-03-30 22:12:55

标签: ruby-on-rails ruby-on-rails-4 where-clause

我有通知模型。每个实例都属于用户模型和Book模型。

class Notification < ActiveRecord::Base
  belongs_to :texto, :foreign_key => "text"
  belongs_to :usuario, :foreign_key => "user_related"

我的通知模型中也定义了一些范围

scope :pending, ->(current_usuario_id) {
    joins(:texto).
    where("texto.usuario_id = ? AND notification.user_related != ?", current_usuario_id, current_usuario_id).
    where(:viewed => false)
  }

所以我只是得到当前用户看不见的通知。但我得到了这个错误:

PG::UndefinedTable: ERROR:  missing FROM-clause entry for table "texto"

知道怎么做对吗?

1 个答案:

答案 0 :(得分:1)

joins()使用关联中定义的符号,因此joins(:texto)是正确的。

另一方面,在&#34;其中&#34;您必须提供数据库中存在的表名。 Rails在创建模型名称后复数表名。

在控制台中运行

ActiveRecord::Base.connection.tables.include?("textos") 

将确保表名是&#34; textos&#34;而不是&#34; texto&#34;。