Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何从rails中的另一个表中查找记录?_Ruby On Rails_Find_Rails Activerecord - Fatal编程技术网

Ruby on rails 如何从rails中的另一个表中查找记录?

Ruby on rails 如何从rails中的另一个表中查找记录?,ruby-on-rails,find,rails-activerecord,Ruby On Rails,Find,Rails Activerecord,我有欢迎、用户、学院、教育模式。。 在欢迎页面上,我只想显示那些与当前用户上过同一所大学的用户发布的消息……但我无法显示。我在欢迎控制器中编写了以下代码: def index @welcome = Welcome.all @newmessage = Welcome.new @college = User.find(@current_user.id).colleges end create_table "welcomes", :force => true do |t|

我有欢迎、用户、学院、教育模式。。 在欢迎页面上,我只想显示那些与当前用户上过同一所大学的用户发布的消息……但我无法显示。我在欢迎控制器中编写了以下代码:

def index
  @welcome = Welcome.all
  @newmessage = Welcome.new
  @college = User.find(@current_user.id).colleges
end
create_table "welcomes", :force => true do |t|
    t.text     "message"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

create_table "users", :force => true do |t|
    t.string   "email",                                 :default => "", :null => false
    t.string   "encrypted_password",     :limit => 128, :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
    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"
    t.datetime "updated_at"
    t.string   "first_name"
    t.string   "last_name"
    t.integer  "role_id"
    t.string   "ancestry"
  end
create_table "educations", :force => true do |t|
    t.integer  "college_id"
    t.integer  "user_id"
    t.integer  "year"
    t.text     "concentration"
    t.string   "attended_for"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "month"
    t.boolean  "private",         :default => false
    t.boolean  "approved",        :default => false
    t.integer  "approved_by"
    t.boolean  "alumni",          :default => false
    t.boolean  "is_mentor",       :default => false
    t.boolean  "approved_mentor", :default => false
  end

create_table "colleges", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean  "approved",   :default => false
  end
使用第一行,我可以在视图中显示所有用户发布的消息,但这不是我想要的。使用第三行,我可以找到当前用户的大学数据,但我不确定如何使用这些数据…

如何仅搜索与当前用户拥有相同学院的用户…

以下是型号代码:

def index
  @welcome = Welcome.all
  @newmessage = Welcome.new
  @college = User.find(@current_user.id).colleges
end
create_table "welcomes", :force => true do |t|
    t.text     "message"
    t.integer  "user_id"
    t.datetime "created_at"
    t.datetime "updated_at"
  end

create_table "users", :force => true do |t|
    t.string   "email",                                 :default => "", :null => false
    t.string   "encrypted_password",     :limit => 128, :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
    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"
    t.datetime "updated_at"
    t.string   "first_name"
    t.string   "last_name"
    t.integer  "role_id"
    t.string   "ancestry"
  end
create_table "educations", :force => true do |t|
    t.integer  "college_id"
    t.integer  "user_id"
    t.integer  "year"
    t.text     "concentration"
    t.string   "attended_for"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.string   "month"
    t.boolean  "private",         :default => false
    t.boolean  "approved",        :default => false
    t.integer  "approved_by"
    t.boolean  "alumni",          :default => false
    t.boolean  "is_mentor",       :default => false
    t.boolean  "approved_mentor", :default => false
  end

create_table "colleges", :force => true do |t|
    t.string   "name"
    t.datetime "created_at"
    t.datetime "updated_at"
    t.boolean  "approved",   :default => false
  end

看看这是否有帮助-

User.find(@current_user.id).colleges.joins(:users => :welcomes).select('welcomes.message')

你能看到User.find(@current_User.id).colleges.joins(:User).select('User.email as email').pull(:email)sairam的输出吗…我收到以下错误..ActiveRecord::ConfigurationError:找不到名为'User'的关联;也许你拼错了?非常抱歉-它的用户。User.find(@current_User.id).colleges.joins(:users).select('User.email as email')。pull(:email)pull是在rails 3.2或最新的rails 3.1中引入的。我以为你用的是最新的rails。忽略Pull并循环返回的数组。无需循环,只需使用“.map(&:email)”而不是“Pull”