- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
有很多教程向您展示如何在 Rails 中为 has_many :through 关系创建模型指令,但似乎没有很多文章与设置表单以创建和编辑这些关系的过程相关。我正在寻求一些帮助(或很好的例子)来了解如何创建一个允许用户在 Rails 应用程序中管理这些类型的关系的界面。
场景如下:
I have Users, Relationships, and Athletes. A User can have a Relationship with an Athlete in a variety of roles: Coach, Mentor, Parent, or Fan.
这是我的模型:
class User < ActiveRecord::Base
has_many :relationships
has_many :athletes, :through => :relationships
end
class Athlete < ActiveRecord :: Base
has_many :relationships
has_many :users, :through => :relationships
end
class Relationship < ActiveRecord :: Base
belongs_to :users
belongs_to :athletes
end
因此,下一步是构建 View 和 Controller ,允许我创建用户与运动员的关系(与教练、家长等角色)、编辑关系或破坏关系。
最终,我的目标是实现用户可以创建运动员并选择关联关系的场景。
不幸的是,除了模型说明或 has_many 关系的示例,我找不到任何具体的教程或引用。
如果有人有链接或示例可以简单地解决这个问题,我应该能够自定义其余部分。
最佳答案
此处 User 和 Athlete 模型之间的关系本质上是 has_and_belongs_to_many
关系 (HABTM)。通过与您来回交流,您似乎对建立这些关系的最佳方式感到困惑。
开始阅读的好地方是 ActiveRecord 关联的文档,特别是 the documentation for HABTM relationships .
您的模型设置没问题。现在您已经设置了 HABTM 关系,下面是您可以执行的操作。假设您的 Athlete 和 User 模型都非常简单,只有 name
属性,这是一个字符串。您现在可以执行如下代码(这是 Rails 控制台的控制台输出):
User.create(:name => "Jeff")
usr = User.first
=> #<User id: 1, name: "Jeff">
usr.athletes
=> []
atl = usr.athletes.create(:name => "Mike")
=> #<Athlete id: 1, name: "Mike">
上面的行将创建一个名为 Mike 的用户,并自动创建一个具有适当属性的关系条目来链接两者。所以现在如果你这样称呼:
usr.athletes
=> [#<Athlete id: 1, name: "Mike">]
现在,如果您希望允许用户在创建 Athlete 时指定他们与 Athlete 之间的关系,您可以将 Relationship 类设置为具有 relation
类型的 string 字段
,然后在创建关系时(正如我刚才在上面显示的那样),您可以执行如下操作:
rel = usr.relationships.where(:user_id => usr.id, :athlete_id => atl.id).first
=> #<Relationship id: 1, user_id: 1, athlete_id: 2, :relation => nil>
rel.relation = "Friend"
rel.save
=> #<Relationship id: 1, user_id: 1, athlete_id: 2, :relation => "Friend">
希望这比我原来的回答更有帮助。如果您有任何问题,请告诉我。并且一定要查看我上面提到的 ActiveRecord Associations 文档。
关于ruby-on-rails - 为 has_many :through relationship in Rails 3 创建 Controller 和 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8059238/
我有一个具有以下模型的应用程序:- 类别- 子类别- 产品- 产品子类别 我的关系如下: Category has_many :subcategories Subcategory belongs_to
看来 rails 仍然不支持这种类型的关系并抛出 ActiveRecord::HasManyThroughAssociationPolymorphicThroughError 错误。 我该怎么做才能实
我想知道我可以在多大程度上使用 Rails 中的关联。考虑以下因素: class User :provider end class Provider :businesses belongs
我是 Rails 的新手。我想知道我是否需要将 add_index 添加到两个迁移? 我正在尝试定义用户和事件。每个用户可以有多个事件,每个事件可以有多个用户。所以我会做这样的事情: class Us
我有这个: class User :series end class Serial :serials end class Episode < ActiveRecord::Base belong
我一直致力于一个大量使用模型关联的项目,似乎我发现了 has_many 或 has_one through 功能与 :conditions 功能冲突的情况。简而言之,问题是 through 关联为 h
模拟以下情况的最佳方法是什么: Word belongs_to :wordable, :polymorphic => true Phrase has_many :words, :as => :
这似乎是一个典型的问题,但很难搜索。 我想选择用户通过 has_many 拥有的项目和用户通过 has_many through 关联的项目。 考虑以下模型: class User < ActiveR
首先对英语感到抱歉 所以我已经有了“用户 - 帖子”一对多关联,这意味着每个帖子只能有一个作者,现在我想在用户个人资料中添加“最喜欢的帖子”按钮,以及“添加到收藏夹”按钮每个帖子,所以问题是如何实现这
我有一个用户模型,允许用户关注其他用户。每个用户也有很多东西: class User has_many :following, :class_name => 'Followings', :fore
我正在使用 Rails 4.1 和 Ruby 2.1。 一个用户 has_many 辆车,和一辆车 has_many 约会。获取所有用户约会的最简单方法是什么? 理想情况下,我想做这样的事情:user
我想为 has_many/has_many 关系定义一个工厂(我想我做对了)但是我不知道如何为这些创建的工厂的每个对象定义属性。 这是主页,这是交易卡片的列表 我们假设下面的主页 View 是针对登录
我正在努力弄清楚如何实现这个计数。模型是用户、测试、等级 用户 has_many 测试,测试 has_many 成绩。 每个等级都有一个计算分数(strong_pass、pass、fail、stron
我有一个 has many through 关系来定义用户已回答的问题。 如何为用户创建的问题建立关系? 通常你会在用户和问题之间创建一个 has_many 和 belongs_to 关系,但是因为我
例如,在 class Student < ActiveRecord::Base has_many :awards end class Awards < ActiveRecord::Base b
我仍然在尝试如何处理在Ecto中创建/更新has_many, through:关联。我已经重新阅读了José's关于关联以及the docs的帖子,但我仍在努力。 我所拥有的是: 网站/模型/dish
# == Schema Information # # Table name: orders # # id :integer not null, pri
我正在尝试从 EventView.promoter_id = User.id 的用户获取事件,但它无法正常工作。这是我的设置(目前不正确): User has_many :events has_man
我有三门课 TeamMember , Service和ServiceTeamMember 我有 class Service has_many :service_team_members has
我需要列出所有用户及其销售的产品总量及其电子邮件和产品总量, class User :user).group('users.email').sum(:quantity) 关于mysql - 事件记录
我是一名优秀的程序员,十分优秀!