ActiveRecord加入表格和收集信息[RAILS]

时间:2016-04-07 18:11:28

标签: sql ruby-on-rails ruby postgresql activerecord

我正在努力解决从模型中获取数据的问题。 我确实在两个模型之间有一个关系has_many。用户&事件。我做了链接表,因为我需要其他信息,这些信息将存储在链接表中。问题是我无法从链接表中获取数据。

我的模型如下:

class User < ActiveRecord::Base
  has_many :event_users
  has_many :events, through: :event_users
end


class Event < ActiveRecord::Base
    has_many :event_users
    has_many :users, through: :event_users
end

和链接表:

class EventUser < ActiveRecord::Base
    belongs_to :event 
    belongs_to :user
end

我的这些模型的数据库架构:

create_table "users", force: :cascade do |t|
    t.text     "email",                  default: "", null: false
    t.text     "encrypted_password",     default: "", null: false
    t.text     "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.text     "current_sign_in_ip"
    t.text     "last_sign_in_ip"
    t.datetime "created_at",                          null: false
    t.datetime "updated_at",                          null: false
    t.text     "steam_id_64"
    t.text     "nick"
    t.text     "name"
    t.integer  "age"
    t.text     "country"
    t.text     "city"
    t.text     "gender"
    t.boolean  "admin"
end

create_table "events", force: :cascade do |t|
    t.text     "event_type"
    t.text     "name",           null: false
    t.datetime "starting_date"
    t.datetime "ending_date"
    t.integer  "eventable_id"
    t.text     "eventable_type"
    t.datetime "created_at",     null: false
    t.datetime "updated_at",     null: false
end

create_table "event_users", force: :cascade do |t|
    t.integer "event_id"
    t.integer "user_id"
    t.integer "position"
    t.integer "score_points"
    t.text    "team_name"
    t.integer "team_score_points"
end

我试图通过控制台首先测试这个(我有关于数据库工作的数据)我正在尝试收集这些数据,以便稍后在桌面上显示它。

我试过了:

User.joins(:events).select('*')

但它给了我混合数据。但是它没有给位于连接表上的位置字段(event_users)。

如果可能,我希望通过查询来获取数据。提前致谢。

1 个答案:

答案 0 :(得分:0)

试试这个:

users = User.joins(event_users: :event)

users.select("event_users.position")
相关问题