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

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

问题描述:

我有欢迎,用户,学院,教育模型.. 在欢迎页面上,我想显示只有那些已经去过同一所大学的用户发布的消息......但我无法显示。我写了下面的我的欢迎控制器代码:如何从rails的另一个表中查找记录?

def index 
    @welcome = Welcome.all 
    @newmessage = Welcome.new 
    @college = User.find(@current_user.id).colleges 
end 

使用第一线,我能够证明发表我的看法里面的所有用户的消息,但是这不是我want.Using第三行,我能够找到当前用户数据的大学,但我不知道我怎么可以使用此数据...

我怎么可以只搜索具有相同塔的大学目前用户的用户...

以下是型号代码:


class User < ActiveRecord::Base 
    has_many :welcomes 
    has_many :educations 
    has_many :colleges, :through => :educations 
end 

class College < ActiveRecord::Base 
    has_many :educations 
    has_many :users, :through => :educations 
end 

class Welcome < ActiveRecord::Base 
    belongs_to :user 
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') 
+0

没有其不工作... sairam .. – NJF 2012-04-03 06:22:53

+0

你能查看User.find(@ current_user.id).colleges.joins(:user).select('user.email as email')的输出。pluck(:email) – Sairam 2012-04-03 06:25:06

+0

sairam ...我收到以下错误.. ActiveRecord :: ConfigurationError:找不到名为'user'的关联;也许你拼错了吗? – NJF 2012-04-03 06:32:48