как найти записи из другой таблицы в рельсах? - PullRequest
0 голосов
/ 03 апреля 2012

У меня есть приветствие, пользователь, колледж, модель образования. На странице приветствия я хочу показать сообщения, отправленные только теми пользователями, которые поступили в тот же колледж, что и текущий пользователь ... но я не являюсьв состоянии показать это.я написал следующий код в моем приветственном контроллере:

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

используя первую строку, я могу показывать сообщения, опубликованные всеми пользователями в моем представлении, но это не то, что я хочу. Использованиетретья строка, я могу найти данные колледжа текущих пользователей, но я не уверен, как я могу использовать эти данные ...

как я могу искать только тех пользователей, которые имеют то же самоеколледж в качестве текущих пользователей ...

Ниже приведены коды моделей:


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

1 Ответ

0 голосов
/ 03 апреля 2012

Посмотрите, поможет ли это -

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