Я пытаюсь смоделировать отношения один-ко-многим в рельсах на примере пользователя и команды.
В моем примере пользователь может иметь только одну команду, а команда может иметь несколько пользователей. пользователь содержит поле team_id
Схема:
create_table "teams", force: :cascade do |t|
t.string "slack_team_id"
t.string "name"
t.boolean "active", default: true
t.string "domain"
t.string "token"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "bot_user_id"
t.string "activated_user_id"
t.string "activated_user_access_token"
t.string "question_time", default: "10:00", null: false
end
create_table "users", force: :cascade do |t|
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "user_name"
t.string "nickname"
t.string "slack_user_id"
t.bigint "team_id"
t.index ["team_id"], name: "index_users_on_team_id"
end
add_foreign_key "users", "teams"
Модель команды:
class Team < ApplicationRecord
has_many :users
end
Модель пользователя:
class User < ApplicationRecord
belongs_to :team
end
EDIT:
Что не работает?
=> Когда я пытаюсь сделать team.users
, он говорит NoMethodError для функции пользователя.
Я считаю, что это потому, что я использую бот Slack Ruby (https://github.com/slack-ruby/slack-ruby-bot-server)
Здесь модель команды уже указана: https://github.com/slack-ruby/slack-ruby-bot-server/blob/master/lib/slack-ruby-bot-server/models/team/methods.rb
Я чувствую, что использую эту модель команды, а не созданную мной модель команды.
Любые указатели на то, как я могу сказать, что он должен использовать мою собственную модель команды.
РЕДАКТИРОВАТЬ 2 =>
Как я получаю доступ к team.users?
Gem slack-ruby-bot предоставляет функциональные возможности для расширения команды slack и будет вызывать обратный вызов при вводе этой команды пользователем.
Здесь я использую это как:
class Give < SlackRubyBot::Commands::Base
def self.call(client, data, match)
team = client.owner
puts team.users
end
end
Как видите, команда возвращается внутренней реализацией slack-ruby-bot.
Пожалуйста, помогите мне понять, почему это не работает