ruby-on-rails - Rails one_to_many 关联不起作用
问题描述
我正在尝试通过用户和团队的示例来模拟 Rails 中的一对多关系。
在我的示例中,用户只能有一个团队,而团队可以有多个用户。用户包含 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
编辑:什么不起作用?=> 当我尝试这样做时team.users
,它显示用户功能的 NoMethodError。
我相信这是因为我使用的是 Slack Ruby bot gem(https://github.com/slack-ruby/slack-ruby-bot-server)
我觉得它使用的是这个团队模型,而不是我创建的团队模型。关于我如何说它应该使用我自己的团队模型的任何指示。
编辑 2=>
我如何访问 team.users?slack-ruby-bot gem 提供了扩展 slack 命令的功能,当用户键入该命令时,它会给出回调。
在这里,我将其用作:
class Give < SlackRubyBot::Commands::Base
def self.call(client, data, match)
team = client.owner
puts team.users
end
end
如您所见,团队由 slack-ruby-bot 的内部实现返回。
请帮助我理解为什么这不起作用
解决方案
我希望它会帮助你。
相对而言,我们可以访问如下数据
Team.all[0].users
Team.first.users
User.first.team
Team.all.map{|t| t.users}
推荐阅读
- nginx - Nginx 1.14 无法访问系统环境变量
- javascript - 不显示标签中的图像
- vba - 范围类的 1004 复制方法失败,较小的数据集上不存在错误
- javascript - 包含视频元素时,flex 属性未按预期工作
- hibernate - 使用 Spring Boot 2 JPA 的 DefaultComponentSafeNamingStrategy
- node.js - 我如何能够创建重新启动配置而不是启动配置(.vscode)
- java - 是否可以在 Android 设备中独立使用 2 个 MIC?
- r - 聚类导致非常集中的聚类
- c# - 在 C# 中验证连接安全协议
- javascript - 在 Firefox 和 IE 上从服务器下载文件