簡體   English   中英

在Rails 4中將SQL查詢轉換為Active Record

[英]Converting a SQL query to Active Record in Rails 4

這是我的兩個模特

class Comment < ActiveRecord::Base
belongs_to :phone
end

class Phone < ActiveRecord::Base
has_many :comments, :dependent => :destroy
end

這是表的架構

ActiveRecord::Schema.define(version: 20131119231249) do

create_table "comments", force: true do |t|
t.string   "username"
t.string   "ipaddy"
t.text     "pcomments"
t.string   "company"
t.string   "calltype"
t.datetime "created_at"
t.datetime "updated_at"
t.integer  "pnumber"
t.string   "source"
end

create_table "phones", force: true do |t|
t.integer  "pnumber"
t.text     "mrcomment"
t.integer  "ccount"
t.datetime "created_at"
t.datetime "updated_at"
end
end

這是有效的原始SQL

SELECT phones.ccount ,
   comments.*
   FROM phones
   INNER JOIN comments
   ON phones.pnumber = comments.pnumber;

當我在控制器中運行以下命令時

    @phones = Phone.select("phones.ccount, comments.*").joins(:comments).where(:comments => {comments.pnumber => phones.pnumber})

我收到以下錯誤

undefined local variable or method `comments' for #<FrontPageController:0x00000003c56c70>

任何有關活動記錄聲明的幫助都將不勝感激

似乎您錯誤地使用了select()。 您是否閱讀過以下文檔: http : //apidock.com/rails/ActiveRecord/QueryMethods/select

來自文檔:“第二個:修改查詢的SELECT語句,以便僅檢索某些字段:”

查詢的語法應更像(使用標准示例):

l = Location.where(["id = ?", id]).select("name, website, city").first.

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM