gpt4 book ai didi

mysql - 浏览器显示 MySQL 错误,我没有列

转载 作者:行者123 更新时间:2023-11-29 12:40:33 25 4
gpt4 key购买 nike

我在 Rails 中的架构清楚地表明我有名为“position”的列。

  create_table "tasks", force: true do |t|
t.integer "subject_id"
t.string "name", limit: 50
t.string "permalink", limit: 20
t.integer "position"
t.string "due_date"
t.datetime "created_at"
t.datetime "updated_at"
end

add_index "tasks", ["permalink"], name: "index_tasks_on_permalink", using: :btree
add_index "tasks", ["subject_id"], name: "index_tasks_on_subject_id", using: :btree

我添加了一个名为 sorted 的 lambda进入我的Task型号:

scope :sorted, lambda {order("subjects.position ASC")}

我的 Controller 非常基本;我只完成了第一个定义。

class TasksController < ApplicationController

layout false

def index
@tasks = Task.sorted
end

现在我的index.html.erb看起来很完美,即使我还没有完成底部的链接(因为这不是错误状态)。

<table>

<tr class="header">
<th>ID</th>
<th>Subject ID</th>
<th>Task</th>
<th>Permalink</th>
<th>Paragraphs</th>
<th>Actions</th>
</tr>

<%=@tasks.each do |t|%>

<tr>
<td><%=t.position%></td>
<td><%=t.subject_id%></td>
<td><%=t.name%></td>
<td><%=t.permalink%></td>
<td class="center"><%t.paragraphs.size%></td>
<td class="actions">
<%=link_to("Show", {:action => 'show', :id => t.id}, :class => 'action show')%>
<%=link_to("Edit", {:action => 'edit', :id => t.id}, :class => 'action edit')%>
<%=link_to("Delete", {:action => 'delete', :id => t.id}, :class => 'action delete')%>
</td>
</tr>

<%end%>

</table>

我的浏览器上的错误显示:Mysql2::Error: Unknown column 'subjects.position' in 'order clause': SELECT tasks.* FROM tasks ORDER BY subjects.position ASC它突出显示 <%=@tasks.each do |t|%> 。有人可以解释一下吗?

最佳答案

您的范围希望按 subjects.position 排序,但您创建了一个名为 tasks 的表。

将范围更改为:

scope :sorted, lambda { order('tasks.position') }

关于mysql - 浏览器显示 MySQL 错误,我没有列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26187217/

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