我正在努力解决从模型中获取数据的问题。 我确实在两个模型之间有一个关系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)。
如果可能,我希望通过查询来获取数据。提前致谢。
答案 0 :(得分:0)
试试这个:
users = User.joins(event_users: :event)
users.select("event_users.position")