Rails Accepts_nested_attributes 计数验证

2023-11-25

我有三个型号。销售、商品和图像。我想验证创建销售时,每个销售至少有三张照片和一件或多件商品。实现这一目标的最佳方法是什么?

销售模式:

class Sale < ActiveRecord::Base
   has_many :items, :dependent => :destroy
   has_many :images, :through => :items

   accepts_nested_attributes_for :items, :reject_if => lambda { |a| a[:title].blank? }, :allow_destroy => true
end

商品型号:

class Item < ActiveRecord::Base

  belongs_to :sale, :dependent => :destroy
  has_many :images, :dependent => :destroy

  accepts_nested_attributes_for :images

end

图片型号:

class Image < ActiveRecord::Base
  belongs_to :item, :dependent => :destroy
end

创建用于验证的自定义方法

在您的销售模型中添加如下内容:

validate :validate_item_count, :validate_image_count

def validate_item_count
  if self.items.size < 1
    errors.add(:items, "Need 1 or more items")
  end
end

def validate_image_count
  if self.items.images.size < 3
    errors.add(:images, "Need at least 3 images")
  end
end

希望这对您有所帮助,祝您好运,编码愉快。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rails Accepts_nested_attributes 计数验证 的相关文章

  • rake db:migrate 到底做了什么?

    rake db migrate 是否仅添加新的迁移 还是会删除所有迁移 更改并构建所有新内容 我认为 rake 抛出错误 因为它试图访问迁移 040 中的表属性 该属性已在迁移 042 中删除 不知何故 我的数据库和 rake 不同步 我想
  • Rails 4:Solr 抛出 JavaMissing 错误,但已安装 Java

    我重新启动了 Rails 4 VPS Solr 显然也关闭了 我现在正在尝试启动 Solr 但是当我运行以下命令时RAILS ENV production bundle exec rake sunspot solr start我收到以下错误
  • Rails 4 生产环境中资产出现 404 not found 错误

    我是java环境中的rails新手 我对轨道 3 到轨道 4 的资产管道几乎没有什么困惑 目前我使用的是 Rails 4 2 5 我在本地环境中创建了一个示例应用程序 我从 app assets javascripts 内部创建了一个新的
  • puma 初始化程序不适用于 Rails 4.2

    我之前安装过很多次puma 从来没有出现过这个问题 我逐字遵循heroku 的指示 我创建了一个Procfile里面有这个 web bundle exec puma C config puma rb 这是配置文件 puma rb worke
  • 重写的方法仍然被调用

    我正在使用一个正在实现的库belongs to数据库中两个条目之间的关联 由于这不是我需要的行为 我想通过重写此方法prepend 但 pry 告诉我 原来的方法仍然被调用 我仔细检查了一下 我使用的是 ruby 2 0 前置的代码 mod
  • 如何修复 PagesController#home 缺少请求格式模板:text/html

    对于我的 Rails 6 应用程序routes rb I have Rails application routes draw do root pages home end 并在我的pages controller rb I have cl
  • 如何在 Rails 中为不在模型文件夹根目录中的模型定义工厂女孩?

    我想为我的服务器中的模型创建一个工厂女孩 该模型位于模型文件夹的文件夹内 我的树视图如下所示 app models xxx user rb spec factories xxx user rb 我的工厂女工长这样 FactoryGirl d
  • asset_host 和相关协议 URL 更改为 http

    我的应用程序 Rails 4 0 0 的某些元素可通过 http 和 https 连接使用 因此我已将 asset host 配置为使用相对协议 url 这应该允许浏览器进行切换它希望从中获取资产的协议 config action cont
  • 如何在控制器方法之间传递值

    有没有办法在控制器方法之间共享数组并将其存储到页面重新加载或调用另一个控制器的方法 有些方法应该改变数组 你可以使用rails缓存 Rails cache write list 1 2 3 Rails cache read list
  • Heroku: PG::ConnectionBad: 无法连接到服务器: 连接被拒绝

    我尝试将新应用程序推送到 heroku 并出现此错误PG ConnectionBad could not connect to server Connection refused 这是我的 gemfile 与此有关系吗 我正在使用 spre
  • Rails:构建涉及多态关联和 STI 的查询

    我正在尝试查找有关照片的 10 条最新评论 以便将它们集成到我的 Rails 3 0 3 应用程序上的活动提要中 我有一个Photo模型 它继承自Upload使用单表继承的模型 class Upload lt ActiveRecord Ba
  • 在控制器中调用模型方法

    我在这里遇到了一些困难 我无法成功调用属于ProjectPage model in the ProjectPage 控制器 我在我的ProjectPage控制器 def index searches Project published fi
  • Rails:将值序列化为逗号分隔而不是 YAML

    我正在寻找一种方法来存储例如的序列化值 列中的 ID 在之前的声明中 这不是最佳设计 该列用于关联记录的 ID 但仅在显示记录时使用 因此不会对该列进行选择进行查询 也不会对此列进行联接任何一个 在 Rails 中 我可以使用以下方法序列化
  • 根据多列删除重复记录

    在我们的系统中 我们每小时从外部数据库进行导入 由于导入脚本中存在错误 现在存在一些重复记录 如果任何记录具有相同的内容 则视为重复 legacy id and company 我可以运行什么代码来查找并删除这些重复项 我正在玩这个 Pro
  • Rails:哪个是首选的 Mailchimp gem? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 在 Rails 中使用 Mailchimp API 的首选 gem 或插件是什么 这里有一个列表 但我
  • 安装atomic (1.1.16) 时出错,Bundler 无法继续

    我正在尝试创建一个新的 Rails 应用程序 但在捆绑时会出现此错误 这是我第一次遇到这个错误 Gem files will remain installed in usr local rvm gems ruby 1 9 3 p448 ge
  • 对于 Windows 上 gem 中的本机扩展构建失败该怎么办?

    我下载的几个 Rails 应用程序依赖于bson ext这似乎是一个本机代码库 当我跑步时rake gems install对于该应用程序 我收到以下错误消息 ERROR Error installing bson ext ERROR Fa
  • windows 10 ruby​​2.5 Rails 5.1.5 无法加载此类文件 -- sqlite3/sqlite3_native (LoadError)

    环境 窗口 10 ruby 2 5 Rails 5 1 5 问题 无法加载这样的文件 sqlite3 sqlite3 native LoadError 我已经尝试过 gem uninstall sqlite3 和 gem install s
  • Rails 3 对象#尝试不起作用?

    我应该从哪里开始寻找 这就是让我相信的原因 0 urzatron work secret project rails c Loading development environment Rails 3 1 3 irb main 001 0
  • 让Byebug完成执行而不退出Pry

    当我在Rails中使用Byebug设置断点时 有时我希望它完成执行 但github上的指南说使用exit这也退出了 Pry 打字continue如果断点在循环中 重复执行可能会很烦人 有没有办法在不退出 Rails 控制台的情况下停止 by

随机推荐

  • JGit 克隆存储库

    我正在尝试使用 JGit 克隆 Git 存储库 但遇到 UnsupportedCredentialItem 问题 My code FileRepositoryBuilder builder new FileRepositoryBuilder
  • 是否可以将“require”和“import”与Webpack一起使用?

    我们必须更新一些依赖项才能切换到 Webpack 4 并且在尝试混合时在 webpack 中收到警告 在浏览器中收到错误import and require在同一个项目内 我们有一个very大型项目 300 个文件 其中一些文件使用var
  • DotNetCore:GetInvalidFileNameChars 的跨平台版本?

    我正在构建一个可在 Windows 和 Ubuntu 系统上运行的 Net Core 2 0 控制台应用程序 我有一个字符串需要转换为安全的文件名 目前我正在使用以下代码来实现此目的 var safeName string Join nam
  • __func__ C++11 函数的局部预定义变量,无法编译

    The func 函数的 C 11 本地预定义变量无法在使用默认内置 Visual Studio 2012 v110 编译器或 2012 年 11 月 CTP v120 CTP Nov2012 编译器的 Visual Studio 2012
  • 将选项 [keepaspectratio=true, scale = 0.75] 添加到 Sweave 中的 \includegraphics{}

    我有以下 R 代码 lt
  • Android - 推送通知已开启?

    如何以编程方式检查用户是否在应用程序设置中关闭推送通知 我可以直接从应用程序打开应用程序设置意图来提示用户将其打开吗 Thanks 假设您指的是 Google Cloud Messaging 因为您使用的是 android 和推送通知标签
  • PHP 请求生命周期

    好吧 我对 PHP VM 的了解还比较幼稚 最近我一直在想一些事情 特别是 Web 应用程序的 PHP 请求生命周期是什么样的 我找到一篇文章here这给出了很好的解释 但我觉得有has更贴近故事 根据文章的解释 每次向服务器发出请求时都会
  • 如何在VBA中使用列/行索引作为范围

    喜欢使用Cells 1 1 代替Range A1 在 VBA 中使用列 行索引作为范围的最佳方法是什么 我想出了两种解决方案来表示 Range A A Range Cells 1 1 Cells Columns 1 Rows count 1
  • 如何解释 ELF 可执行文件中的动态符号表?

    我正在考虑解释动态符号表 dynsym 的 ELF 可执行文件 我可以成功解释符号表 symtab 每个符号 16 个字节 使用value属性来表示符号的地址和name属性表示字符串开头的偏移量 strtab部分 但我无法解释动态符号表 d
  • C#:如何从资源文件加载光标?

    我已将文件 x ani 导入到资源文件Resources resx 中 现在尝试使用 ResourceManager GetObject aero busy ani 加载该文件 Cursor Current Cursor Resources
  • ASP.Net MVC 中的线程安全

    我怀疑这也适用于一般的 ASP Net 但我不确定 如果我在控制器上有一个操作方法 比如 MyController DoSomethingExciting 并且三个客户端 同时 点击它 那么它本质上是线程安全的 还是我需要做一些事情来确保三
  • Objective C:我的自定义 -init 方法没有被调用

    我有一个从 UIView 派生的类 我想为其创建一个 init 类 如下所示 id init if self super init my initializations here return self 不幸的是 我知道 init 没有被调
  • 如何在 Apache 2.x 中使用 mod_deflate 预压缩文件?

    我通过 apache 提供所有内容Content Encoding zip但这是动态压缩的 我的大部分内容都是磁盘上的静态文件 我想预先对文件进行 gzip 压缩 而不是每次请求时都对其进行压缩 我相信 这是一件事 mod gzip在 Ap
  • 高效的Python IPC [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我正在Python3中制作一个应用程序 它将分为batch and gui部分 Batch负责处理逻辑和gui负责显示它 Which 进程间通信 I
  • 如何将微调器添加到 ActionBar?

    我试图让我的微调器作为操作栏下拉列表项工作 但我似乎根本无法实现它 在谷歌搜索后没有太多关于此的教程 我认为它与 setListNavigationCallbacks 有关行代码 我只是不知道如何从该行开始工作 setup action b
  • 倒计时器 - iPhone [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 我想显示倒计时器 我有开始日期和结束日期 我需要显示剩
  • python中大数的阶乘

    这是我的阶乘方法 def factorial n Returns factorial of n r 1 for i in range 1 n 1 r i return r 我认为这非常简单 但我猜你可以做得更有效 因为像 100000 这样
  • 为什么当Windows服务停止时调用base.OnStop()?

    我正在创建一个 C Net Windows 服务 想知道您是否总是需要调用base OnStop 在服务的OnStop 方法以及为什么 protected override void OnStop threadRunning false t
  • 为什么要将 stdin、stdout 和 stderr 设置为单个 fd?

    我从 APUE 看到了这个代码片段 dup2 fd 0 dup2 fd 1 dup2 fd 2 if fd gt 2 close fd 在我的理解中 它使 stdin stdout 和 stderr 都指向 fd 它说很多程序都包含此代码
  • Rails Accepts_nested_attributes 计数验证

    我有三个型号 销售 商品和图像 我想验证创建销售时 每个销售至少有三张照片和一件或多件商品 实现这一目标的最佳方法是什么 销售模式 class Sale lt ActiveRecord Base has many items depende