问题标签 [validates-associated]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
8940 浏览

ruby-on-rails - Rails 3 的更好的 validates_associated 方法?

Rails 3 包括validates_associated在保存嵌套模型时自动调用的。该方法的问题是消息很糟糕 - “模型无效”

对于 Rails 2,有一些帖子针对此问题进行了攻击:

可能还有更多。最好有这些帖子中描述的更好的版本,它与 Rails 3 兼容。主要的改进是包括相关模型失败的原因。

0 投票
2 回答
7777 浏览

ruby-on-rails - validates_associated 不检查关联的存在

谁能弄清楚这里发生了什么?我能够让我的代码按照我想要的方式工作,但我无法弄清楚为什么 validates_associated 没有按我的预期工作。这是我的代码片段:

使用此代码,我无法使用 user_id == nil 保存标志。我可以用 user_id == 12345 保存一个标志(即一些 user_id 不在数据库中)。这就是 validates_associated API 规范所说的:

validates_associated(*attr_names)

验证关联的一个或多个对象本身是否都有效。适用于任何类型的协会。
...
注意:如果尚未分配关联,则此验证不会失败。如果要确保关联既存在又保证有效,还需要使用 validates_presence_of。

我能够通过使用它来获得所需的行为,而不是:

我对 API 规范的理解是 validates_associated 检查关联表,以查看是否存在具有与 Flag 的外键匹配的 id 的行,前提是外键是 non-nil。任何人都可以对此提供任何见解吗?我是否误解了 validates_associated 应该如何工作?

0 投票
1 回答
182 浏览

validation - 活动记录验证 - validates_associated

我不清楚这种方法实际上做了什么或何时使用它。

假设我有这些模型:

当我为这样的人创建电话号码时:

保存失败,因为第一个数字无效。这对我来说是件好事。但我不明白的是,如果它已经验证了关联的记录,那么函数 validates_related 是什么?

0 投票
2 回答
2341 浏览

ruby-on-rails - ActiveModel:关联模型失败时禁用失败验证

默认情况下, Rails3 是否总是validates_associated针对所有模型运​​行?

在这样的简单设置中

带有附加评论的新帖子失败,因为评论无效。

如果validates_associated总是运行,那么为什么会出现(改变:message?)以及如何将其关闭?我试过validates_associated :comments, :unless => proc{true}了,但它什么也没做。

我只是想要一个模型来保存,如果每个关联记录都有效,则尝试保存每个关联记录,但如果关联模型无效,则不会失败。


编辑:这更接近我想要做的事情

还有更多模型遵循与 Game 相同的结构,例如 Book、Movie。如果WikipediaParagraph.paragraph == nil那么游戏验证失败。我希望游戏保存而 WikipediaParagraph 没有保存,但has_one :wikipedia_paragraph, :validate => false两者都保存,没有它既不保存。

我希望有比使用更优雅的东西

对于每个人has_one/many,但现在我意识到这可能是不可能的。

0 投票
1 回答
75 浏览

ruby-on-rails - Rails : Displaying associated model validations

I have got three models

In rate_cards_controller i want to create/update rate_cards such that one country should have one rate_card.. For that i have added uniqueness validation in RateCardCountry Model. And NOw i want to display the error in rate_card_controller while creating/updating rate_cards.. Needed help?

0 投票
1 回答
2010 浏览

ruby-on-rails - 使用 :autosave 进行 has_one 关联:如何在孩子的控制器上显示父母的错误?

我创建了一个看起来像这样的模型:

子模型就像:

当我在新孩子的页面上时,如果用户没有为孩子选择以前创建的父母,我想强制他在创建孩子的同时创建一个。如果用户为孩子和父母正确填写所有数据,它工作正常,但如果父母在给定字段上有任何验证问题,我得到的唯一消息是:“父母不能为空”

我想向用户显示如果他单独创建父级时会显示的相同消息。这应该是这样的:“父字段 X 太短”。

是否有可能,使用 validates_associated 或一些类似的助手?

提前致谢!

0 投票
1 回答
285 浏览

ruby-on-rails - has_one validates_associated 触发不一致,尽管 'on: :create'

在检查valid?具有validates_associated :contact, on: :create. 如果我打两个电话,valid?第一个是true,第二个是false

这是模型的最小版本,希望它足够详细:

我在控制器中看到的行为是两个动作之间的无限重定向:

如果我取消注释#&& parent.valid?它会停止重定向,这看起来很疯狂。

发生这种情况的父母有一个无效的phone_number,但他们注册后周围的要求发生了phone_number变化,所以我们不想为此烦恼他们。因此,期望的行为是valid?to be true,并且最初只是在随后的调用中发生变化。

我已经放入了一些调试语句,我可以看到验证上下文:update适用于每个调用。所以它不应该运行validates_associated. 这些也是创建的父母,所以不应该有:createor new_record?。另一个调试语句证明正在对联系人进行验证,包括对 phone_number 的验证,但仅在第二次在操作中被调用时。

我还设置了一个断点,可以看到parent.valid?返回 true 然后返回 false,而且如果我在valid?被调用和调用之前中断parent.contact_detail,然后parent.valid?它返回 false。

为什么第二次调用parent.valid?验证contact,即使它只应该这样做on: :create

0 投票
3 回答
768 浏览

ruby-on-rails - Rails 4 表单 - 文本字段值必须与关联表中的值匹配(自动完成)

我有两个关联的模型/表

在您输入企业地址的新企业表单中,通常会有一个州和/或国家/地区的下拉选择框。但是对于有数千个城市来说,这是行不通的。有没有办法在允许保存之前检查城市是否列在城市表中?甚至可能将 city_id 放在该字段中而不是 city_name 中?

0 投票
1 回答
496 浏览

cakephp - cakephp multiple select not working

I have two tables 'businesses' and business_categories and their association is like

BusinessesTable.php

and I have to input multiple categories to business_categories table along with businesses.

This is how the input field is in add.ctp view

but this is giving error as

and form is not submitting. Removing multiple => true and replacing business_categories._category_ids to business.category_id is working fine.

Is there anything missing ?

Edit 2

SellerBusinessesController.php

on debugging : debug($this->request->data), gives

],

0 投票
1 回答
56 浏览

ruby-on-rails - Validates_overlap 自定义消息?

我试试 gem validates_operator。我需要为此验证自定义消息:

验证 :arrival_date, :departure_date, 重叠:{
scope:"place_id",
message_title: "Error",
message_content:"不可能在这个日期预订这个地方" }

但我有简单形式的默认消息:“请查看以下问题”

感谢未来的答案。