为什么在Rails中的搜索查询会出现错误“参数数量错误(给定1,预期为0)”?

瑞安

此行将引发错误“参数数量错误(给定1,预期为0)”。我真的很想知道如何使此查询工作。谢谢!

@posts = Post.all(:joins => :course, :conditions => "course.name in (#{@user.courses.map(&:name).join(',')})",:order => "posts.created_at DESC")

这是我的控制器中的代码:

@user = current_user
@posts = Post.all(:joins => :course, :conditions => "course.name in (#{@user.courses.map(&:name).join(',')})",:order => "posts.created_at DESC")

这些是模型:

class Post < ActiveRecord::Base
belongs_to :user
belongs_to :course
has_many :comments
end

class Course < ActiveRecord::Base
belongs_to :user
has_many :posts
belongs_to :major
end

class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
      :recoverable, :rememberable, :trackable, :validatable

has_many :courses
belongs_to :major
has_many :posts
has_many :comments

accepts_nested_attributes_for :courses, reject_if: :all_blank,      allow_destroy: true
end

这是架构

 create_table "comments", force: :cascade do |t|
t.text     "comment"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer  "user_id"
t.integer  "post_id"
end

add_index "comments", ["post_id"], name: "index_comments_on_post_id"
add_index "comments", ["user_id"], name: "index_comments_on_user_id"

create_table "courses", force: :cascade do |t|
t.string   "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer  "major_id"
t.integer  "user_id"
end

add_index "courses", ["major_id"], name: "index_courses_on_major_id"
add_index "courses", ["user_id"], name: "index_courses_on_user_id"

create_table "majors", force: :cascade do |t|
t.string   "name"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end

create_table "posts", force: :cascade do |t|
t.string   "title"
t.text     "content"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.integer  "user_id"
t.integer  "course_id"
end

add_index "posts", ["course_id"], name: "index_posts_on_course_id"
add_index "posts", ["user_id"], name: "index_posts_on_user_id"

create_table "users", force: :cascade do |t|
t.string   "email",                  default: "", null: false
t.string   "encrypted_password",     default: "", null: false
t.string   "reset_password_token"
t.datetime "reset_password_sent_at"
t.datetime "remember_created_at"
t.integer  "sign_in_count",          default: 0,  null: false
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string   "current_sign_in_ip"
t.string   "last_sign_in_ip"
t.datetime "created_at",                          null: false
t.datetime "updated_at",                          null: false
t.boolean  "admin"
t.string   "username"
t.integer  "major_id"
end

add_index "users", ["email"], name: "index_users_on_email", unique: true
add_index "users", ["major_id"], name: "index_users_on_major_id"
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true
add_index "users", ["username"], name: "index_users_on_username", unique: true

 end
Joaovictortr

您在查询中遇到的错误是由于all方法不需要任何参数,它只是检索给定模型/关系的所有记录。

在这种情况下,您要使用的是ActiveRecord :: QueryMethods中where方法。

还有另一个错误,您在您的条件下使用单数形式的表名,该表名应为复数形式(用课程代替课程)。

另外,您可以在此处使用includes方法和references方法结合使用以生成数据库联接。

因此,您将获得如下所示的内容:

@posts = Post.includes(:course).where("courses.name IN (#{@user.courses.map(&:name).collect { |s| '#{s}'  }.join(',') })").references(:courses).order("posts.created_at DESC")

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

生命周期参数数量错误:预期为1,发现为0

来自分类Dev

为什么会出现<identifier>预期错误?

来自分类Dev

最小测试错误-ArgumentError:参数数量错误(给定1,预期为0)

来自分类Dev

创建用户提交表单时,Ruby on Rails 4中的参数数量错误(0为1)

来自分类Dev

参数数量错误(0表示1)在Rails中进行MongoDB搜索

来自分类Dev

生成的RSpec控制器测试失败,参数数量错误(给定2个,预期为1个)

来自分类Dev

Jekyll:参数数量错误(给定2个,预期为1个)(ArgumentError)

来自分类Dev

Rails:参数数量错误(给定2个,预期为1个)MongoID

来自分类Dev

Rails:参数数目错误(给定1,预期为0)

来自分类Dev

Docker运行产生错误``初始化'':错误的参数数量(给定2个,预期为1个)(ArgumentError)

来自分类Dev

为什么我为form_tag输入了错误的参数数量(1对2)

来自分类Dev

选民部分中的参数数量错误(0为1)

来自分类Dev

Rails:错误的参数数量(1代表0)

来自分类Dev

发送方法轨道的参数数量错误1为0

来自分类Dev

为什么会出现类型错误:接受1个位置参数,但给定2个?

来自分类Dev

最喜欢的操作出现错误:参数数量错误(给定1,预期为0)?

来自分类Dev

Active Record Destroy ArgumentError(错误的参数数量(给定1,预期为0)):

来自分类Dev

错误数量的参数(给定 0,预期为 1) - Ruby

来自分类Dev

添加 aasm gem 后,应用程序给我错误:参数数量错误(给定 1,预期为 0)

来自分类Dev

发生 WebSocket 错误:参数数量错误(给定 2,预期为 1)

来自分类Dev

Ruby on Rails:参数数量错误(给定 0,预期为 1)

来自分类Dev

Rails 5.1 部分中的参数数量错误(给定 3,预期为 1..2)

来自分类Dev

检查是否在 ApplicationController 中进行了身份验证,导致“参数数量错误(给定 1,预期为 0)”

来自分类Dev

无法获取 Rails ActiveRecord:条件有效,“参数数量错误(给定 1,预期为 0)”

来自分类Dev

fastlane 脚本中的参数数量错误(给定 0,预期为 1)(ArgumentError)

来自分类Dev

Ruby:错误:当我给出正确数量的参数时,参数数量错误(给定 1,预期为 0)

来自分类Dev

控制器规范中的参数数量错误(给定 2,预期为 0)

来自分类Dev

ArgumentError:Update_Attribute 方法的参数数量错误(给定 1,预期为 2)

来自分类Dev

运行 Rspec 和 Sinatra 时,我不断收到 ArgumentError:参数数量错误(给定 2,预期为 0)

Related 相关文章

  1. 1

    生命周期参数数量错误:预期为1,发现为0

  2. 2

    为什么会出现<identifier>预期错误?

  3. 3

    最小测试错误-ArgumentError:参数数量错误(给定1,预期为0)

  4. 4

    创建用户提交表单时,Ruby on Rails 4中的参数数量错误(0为1)

  5. 5

    参数数量错误(0表示1)在Rails中进行MongoDB搜索

  6. 6

    生成的RSpec控制器测试失败,参数数量错误(给定2个,预期为1个)

  7. 7

    Jekyll:参数数量错误(给定2个,预期为1个)(ArgumentError)

  8. 8

    Rails:参数数量错误(给定2个,预期为1个)MongoID

  9. 9

    Rails:参数数目错误(给定1,预期为0)

  10. 10

    Docker运行产生错误``初始化'':错误的参数数量(给定2个,预期为1个)(ArgumentError)

  11. 11

    为什么我为form_tag输入了错误的参数数量(1对2)

  12. 12

    选民部分中的参数数量错误(0为1)

  13. 13

    Rails:错误的参数数量(1代表0)

  14. 14

    发送方法轨道的参数数量错误1为0

  15. 15

    为什么会出现类型错误:接受1个位置参数,但给定2个?

  16. 16

    最喜欢的操作出现错误:参数数量错误(给定1,预期为0)?

  17. 17

    Active Record Destroy ArgumentError(错误的参数数量(给定1,预期为0)):

  18. 18

    错误数量的参数(给定 0,预期为 1) - Ruby

  19. 19

    添加 aasm gem 后,应用程序给我错误:参数数量错误(给定 1,预期为 0)

  20. 20

    发生 WebSocket 错误:参数数量错误(给定 2,预期为 1)

  21. 21

    Ruby on Rails:参数数量错误(给定 0,预期为 1)

  22. 22

    Rails 5.1 部分中的参数数量错误(给定 3,预期为 1..2)

  23. 23

    检查是否在 ApplicationController 中进行了身份验证,导致“参数数量错误(给定 1,预期为 0)”

  24. 24

    无法获取 Rails ActiveRecord:条件有效,“参数数量错误(给定 1,预期为 0)”

  25. 25

    fastlane 脚本中的参数数量错误(给定 0,预期为 1)(ArgumentError)

  26. 26

    Ruby:错误:当我给出正确数量的参数时,参数数量错误(给定 1,预期为 0)

  27. 27

    控制器规范中的参数数量错误(给定 2,预期为 0)

  28. 28

    ArgumentError:Update_Attribute 方法的参数数量错误(给定 1,预期为 2)

  29. 29

    运行 Rspec 和 Sinatra 时,我不断收到 ArgumentError:参数数量错误(给定 2,预期为 0)

热门标签

归档