在加入型号中验证ID是否有良好做法? -- ruby-on-rails 领域 和 validation 领域 和 activerecord 领域 和 associations 领域 和 has-many-through 领域 相关 的问题

Is it good practice to validate IDs in a join model?


简体版||繁體版
0
vote

问题

中文

我在我的 Artist之间有一个hmt关联设置, Group 型号:

  class Artist < ApplicationRecord   has_many :artist_groups, dependent: :destroy   has_many :artist_groups, through: :artist_groups end  class ArtistGroup < ApplicationRecord   has_many :memberships, class_name: "ArtistGroupMembership", dependent: :destroy    belongs_to :artist   belongs_to :group    has_and_belongs_to_many :roles    accepts_nested_attributes_for :memberships, reject_if: :all_blank, allow_destroy: true    validates_presence_of :artist_id, :group_id end  class Group < ApplicationRecord   has_many :artist_groups, dependent: :destroy   has_many :members, through: :artist_groups, source: :artist end   

您将注意到我的 ArtistGroup 加入模型它验证以确保艺术家和组出现。

当保存关联时,我是否这样做:

   artist.groups.push(Group.first)   

或在我的视图中创建表单(SAN ID输入)ActiveRecord足够智能以映射关联。在我的同时,我甚至应该在我的加入模型中验证这些ID?我注意到在处理多态性协会时变得更加痛苦。

英文原文

I have a HMT association setup between my Artist and Group models:

class Artist < ApplicationRecord   has_many :artist_groups, dependent: :destroy   has_many :artist_groups, through: :artist_groups end  class ArtistGroup < ApplicationRecord   has_many :memberships, class_name: "ArtistGroupMembership", dependent: :destroy    belongs_to :artist   belongs_to :group    has_and_belongs_to_many :roles    accepts_nested_attributes_for :memberships, reject_if: :all_blank, allow_destroy: true    validates_presence_of :artist_id, :group_id end  class Group < ApplicationRecord   has_many :artist_groups, dependent: :destroy   has_many :members, through: :artist_groups, source: :artist end 

As you'll notice in my ArtistGroup join model it validates to make sure the an artist and group are present.

When the association is saved, whether I do something like this:

 artist.groups.push(Group.first) 

or create a form in my view (sans ID inputs) ActiveRecord is smart enough to map the association. With this in my should I even be validating these IDs in my join models? I notice this becomes even more of a pain when dealing with polymorphic associations.

              

回答列表

0
 
vote

Rails 5自动要求 buildSrc4 是指现有的 buildSrc5 所以具有额外的验证是完全不必要的。通过执行

,您可以选择该要求。
  buildSrc6  
 

Rails 5 automatically requires that the belongs_to :artist refers to an existing artist so having extra validation is completely unnecessary. You can make that requirement optional by doing

belongs_to :artist, optional: true 
 
 

相关问题

0  在多对多通过加入表中,是has_many /通过可选的?  ( In many to many through a join table is has many through optional ) 
我有3个型号:客户,商店,注册(邮件列表) (注册是他们自己的对象,因为它们具有诸如选择的状态,选择,退出,黑名单等) 客户和商店相当独立,目前没有彼此直接联系。 但是,我们添加了"邮件列表" 构造,注册: Signup belongs_to :store AND :customer Store has_many...

61  如何通过Ruby上的Ruby在Raby上订购Has_Many?  ( How do i order a has many through association in ruby on rails ) 
给出了以下AR模型,我想在给定任务句柄时按姓氏按字母顺序排序用户: #user has_many :assignments has_many :tasks, :through => :assignments #assignment belongs_to :task belongs_to :user #...

1  使用ActiveRecord找到5个嵌套表的结果  ( Use activerecord to find result of 5 nested tables ) 
我有一个用户型号(:姓名,:密码,电子邮件)和事件模型(:name,:等)和兴趣模型(:name) 然后我创建了两个加入表 - &gt;用户记录和活动情绪;每个都不包含主键,并且仅包括user_id / exing_id和event_id / exing_id。 我正在尝试使用astiveRecord来查询列出兴趣事...

0  编辑/更新Collection_Select具有具有多功能关联的  ( Edit update collection select with has many through association ) 
我有以下型号:配方,标记和标记(加入表) refipe.rb has_many :taggings has_many :tags, through: :taggings accepts_nested_attributes_for :taggings tag.rb has_many :taggin...

0  Rails 4 Has_Many通过:从父模型编辑视图更新连接模型  ( Rails 4 has many through update join model from parent model edit view ) 
在我的Rails 4应用程序中,我有以下型号: class User < ActiveRecord::Base has_many :administrations has_many :calendars, through: :administrations end class Calendar < Ac...

0  如何在Ruby上保存在Ruby上有许多类之间的关联记录  ( How to save an associating record between has many classes in ruby on rails ) 
我创建了三个类来表示 Books , People ,以及 Bookloans 。虽然我能够通过账单展示人们的书籍,我一直在播种我的数据库。 我现在需要保存一本书。我打算通过书籍控制器进行这一行动。具体来说,在BookScontroller中创建贷款动作。虽然这在理论上对我来说是有道理的,但我正在实现适当的语法的可怕...

0  实施“添加到收藏夹”  ( Implement add to favorites ) 
我正在创建一个应用程序,用户可以获得一个房间。我开始了一个has_and_belongs_to_many协会。但后来我刚注意到,使用DraStroley实现删除按钮非常棘手。所以我决定这次通过协会与has_many做到这一点。我有一个应该将房间添加到最爱或愿望清单。不幸的是,当我点击最喜欢的按钮时,我收到此错误: ...

1  在Rails中,您如何将这两个不同的HAS_MANYS合并为一个?  ( In rails how would you merge these two different has manys into one ) 
让我们说我们有一个用户。 用户通过账户_many文档如此... class User < ActiveRecord::Base belongs_to :account has_many :documents, :through => :account, :order => "created_at DES...

32  Rails RSPEC测试为has_many:通过关系  ( Rails rspec tests for a has many through relationship ) 
我是测试和rails的新手,但我试图正确地将我的TDD进程置于正确的过程中。 我想知道你是否使用任何用于测试has_many的范例:通过关系? (或者只是普通的has_many我想)。 例如,我发现在我的模型规格中,我肯定会写入简单的测试,检查是否有关相关方法的关系的两端。 IE: require 'spec...

0  简单的形式 - 选择集合并通过  ( Simple form select collection and set up has many through ) 
如何显示分为三个部分的产品(三种不同的滤波器:Product_1,Product_2,Product_3),并且需要只选择每个部分的一个产品 提交后。我应该为一个订单保存所有产品。 我有4个表: 用户 命令 订单详细信息 产品 remove1 我不确定如何为该情况编写强大的参数以及如何为保存数据创建该对象。...

0  为has_many创建动作:通过  ( Create action for has many through ) 
我有这样的模型: User Paper Subscription 您可以看到 99887665 关系和 Subscription 存储 :user_id and :paper_id 纸有自己的控制器及其 PapersController#index 操作列出了所有可用的论文。 现在真正的问题 我想在每篇...

1  Rails 4 ActiveRecord协会:通过Rails Console更新CollectionProxy  ( Rails 4 activerecord associations updating collectionproxy via rails console ) 
试图通过Rails控制台了解如何执行此操作。 订阅 - 有很多类别 类别 - 属于订阅 有9个类别,但我需要添加十分之一。 如果他们订阅#9类别,我希望它们在添加时已经订阅#10类别。所以它会是如此: subs = Subscription.all subs.each do |sub| if sub.cat...

1  虽然有验证,但是制造有验证  ( Fabrication has many though with validation ) 
我刚刚进入测试,我有许多模型,虽然关系虽然是关系。在每种情况下,一个模型要求在保存时存在另一个模型。我用我尝试的每个测试系统都遇到了一堵墙(FactoryGirl,灯具,现在的制造),我无法弄清楚如何正确设置测试以复制此行为。 i 遵循这个gist作为一个例子但更改了 after_build <代码> befo...

1  通过Booleans或has_many来通过?  ( Use booleans or has many through ) 
我有一个产品模型,一个状态模型和产品型号。 ''0 我用两种方式使用状态。 一个,以显示产品作为产品的方式通过我们的系统(状态 ''1 。一旦产品具有 998876612 的状态,它就无法移动向后在系统中(因此我不创建一个公共404)。产品必须始终拥有这三次中的一个有效。 我还在产品上使用不同"标志" 的状态...

2  正确路由:has_many:通过  ( Correct routing for has many through ) 
我正在尝试在2个对象之间设置多对多关联。我经历了几个教程,并且能够正确地设置模型。我的问题是我无法设置正确的路线,所以我可以查看完整的关系......只能从特定类别显示产品( / /类/ 1 / products / )< / p> 这是我生成模型的方式: script/generate scaffold cat...

5  建立一个通过vs有许多通过未撤下的型号  ( Establishing a has one through vs has many through with unsaved models ) 
我已经写了一个gem,允许谷歌电子表格转换为rails模型。此过程的序列涉及创建所有模型,然后挂钩其关联,然后保存所有模型。它支持可用的所有类型的关联,并且在每种情况下,创建模型,建立关联,然后保存模型正确工作。例外如下: 我有一个简单的 has_one, through 关联(为简洁省略的属性访问): clas...

0  ActiveRecord:has_many和自定义fironfer_key  ( Activerecord has many and custom foreign key ) 
我有以下结构: $.post()2 但我试图运行 $.post()3 发生以下错误: $.post()4 有人可以帮助我吗?它让我疯狂:x 编辑: 当我尝试以下内容时: $.post()5 我收到错误 $.post()6 问题是product_units没有product_...

70  Rails Has_Many:通过Join Model中的额外属性  ( Rails has many through find by extra attributes in join model ) 
对红宝石和铁路来说是新的,但我现在正在预订(这显然意味着什么,哈哈)。 我有两个模型,事件和用户通过表eventUser加入 class User < ActiveRecord::Base has_many :event_users has_many :events, :through => :event...

0  过滤器记录通过关联Rails 2.3.x  ( Filter records in has many through association rails 2 3 x ) 
我有三个模型通过has_many_through关联连接。 GetBackend(id)7 我想获取所有用户的特定板,其中用户的角色是朋友。角色在庆祝活动表中。 我在控制器中尝试了以下内容: GetBackend(id)8 哪个结果: GetBackend(id)9 我已经尝试过: Lis...

0  在Rails 3中加入一对多协会与许多多对多协会  ( Joining a one to many association with a many to many association in rails 3 ) 
我在用户类和表类之间有多对多关联。此外,我在用户和表格之间有一对多关联(一个用户最终拥有该表)。我正在尝试访问用户可以访问的所有表(基本上加入两个关联)。 另外,使用named_scope(现在的范围)是很好的。 这是我到目前为止的内容: class User < ActiveRecord::Base act...

2  has_many通过关联wice_grid  ( Has many through association wice grid ) 
我正在尝试使用wice_grid gem 获取用户在网格表中的角色 user has_many :roles, :through => :assignments role has_many :users, :through => :assignments 在users_controller.rb 中 ...

6  如何从has_many获取行计数:通过关系:UNIQ => True  ( How can one obtain a row count from has many through relations with uniq tr ) 
这是我的型号: class Tag < ActiveRecord::Base # id, name has_many :taggings end class Tagging < ActiveRecord::Base # id, tag_id, owner_id, target_type, targe...

2  如何使用has_many创建复选框网格:通过关联  ( How to create a checkbox grid using a has many through association ) 
好的,所以我有以下设置,需要一些方向。我在这个问题上浪费了近2天,我需要继续前进: 因此,通过rolepermissions相关联的角色和权限 角色 - &gt; Rolepermission - &gt;许可 我正在寻找一个复选框网格,允许我同时编辑所有角色和权限。 这是我正在寻找视觉上的: 任何帮助将非常感谢...

9  使用Formtastic在Rails中使用来自关联(has_many)模型的字段  ( Using fields from an association has many model with formtastic in rails ) 
我搜索并尝试了很多,但我不能按照我想要完成它..所以这是我的问题。 class Moving < ActiveRecord::Base has_many :movingresources, :dependent => :destroy has_many :resources, :through => :m...

1  Ruby在Rails上有_many:通过摧毁的东西而不是应该  ( Ruby on rails has many through destroying more than it should ) 
我正在创建一个应用程序,其中有三个主要模型和关系,我需要跟踪一些属性: Schema.RB create_table "entities", force: true do |t| t.string "name" t.string "label" t.string "im...

相关问题

0  在多对多通过加入表中,是has_many /通过可选的? 
61  如何通过Ruby上的Ruby在Raby上订购Has_Many? 
1  使用ActiveRecord找到5个嵌套表的结果 
0  编辑/更新Collection_Select具有具有多功能关联的 
0  Rails 4 Has_Many通过:从父模型编辑视图更新连接模型 
0  如何在Ruby上保存在Ruby上有许多类之间的关联记录 
0  实施“添加到收藏夹” 
1  在Rails中,您如何将这两个不同的HAS_MANYS合并为一个? 
32  Rails RSPEC测试为has_many:通过关系 
0  简单的形式 - 选择集合并通过 
0  为has_many创建动作:通过 
1  Rails 4 ActiveRecord协会:通过Rails Console更新CollectionProxy 
1  虽然有验证,但是制造有验证 
1  通过Booleans或has_many来通过? 
2  正确路由:has_many:通过 
5  建立一个通过vs有许多通过未撤下的型号 
0  ActiveRecord:has_many和自定义fironfer_key 
70  Rails Has_Many:通过Join Model中的额外属性 
0  过滤器记录通过关联Rails 2.3.x 
0  在Rails 3中加入一对多协会与许多多对多协会 
2  has_many通过关联wice_grid 
6  如何从has_many获取行计数:通过关系:UNIQ => True 
2  如何使用has_many创建复选框网格:通过关联 
9  使用Formtastic在Rails中使用来自关联(has_many)模型的字段 
1  Ruby在Rails上有_many:通过摧毁的东西而不是应该 



© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有