Tag: 模型

触发依赖::使用重写的destroy-destroy进行破坏

在我们的应用程序中,我们重写了ActiveRecord destroy方法,以便我们的记录不会被删除(因此用户可以取消删除)。 像这样: def destroy self.is_deleted = true self.save freeze end 然而,这似乎已经禁止了我们has_many关系的依赖性破坏。 换句话说,如果在父对象上调用destroy ,则has_many的子对象不会被销毁(它们不会被删除,即DELETE… ‘,也不会被覆盖的destroy -method被调用)。 如何触发子对象的销毁。 谢谢!

模型“belongs_to”可以是/或多个模型吗?

抱歉,如果这是一个轻微的菜鸟问题,但希望澄清我对此的看法。 我有一个可以属于一个模型或另一个模型的模型。 例如: 假设我有一个团队模型,我有一个成员模型,这两个模型都可以有一个BankAccount。 class Team has_many :members has_one :bank_account end class Member belongs_to :team has_one :bank_account end class BankAccount belongs_to :team, :member end 对我而言,上述内容是有道理的,但我想与一些更有经验的Rails人员澄清这一点? Rails有没有办法计算任何给定BankAccount的父模型是什么,请记住它可能是两个模型之一? 例如,如果我在团队银行帐户上调用@ bank_account.member,它会不稳定地抛出? 谢谢你的帮助。

rails – 根模型或应用程序模型

我只是环顾铁路,发现有一个应用程序控制器,但没有应用程序模型。 在rails中没有根模型吗? 如果不是,你在哪里放一个需要在每个模型中的代码。 谢谢,Alex

如何设置管理员批准模型的编辑

我需要一个普通用户可以编辑模型的系统,但编辑实际上不会发生,直到他们得到管理员的批准。 我找到了一个名为paper_trail的gem,它确实有模型版本,但并不特别支持我想要做的事情。 我想知道其他人是如何处理这个问题的。 我应该补充说,我希望能够让用户同时进行编辑。 它们不是很复杂,例如一个是别名。 更复杂的部分可能是多个用户编辑相同模型并尝试进行某种合并的情况。

Ruby on Rails:使用一个表单和一个提交为多个模型创建记录

我有3个型号:报价,客户和项目。 每个报价都有一个客户和一个项目。 当我按下提交按钮时,我想在各自的表格中创建新报价,新客户和新项目。 我已经查看了其他问题和轨道广播,要么它们不适用于我的情况,要么我不知道如何实现它们。 quote.rb class Quote < ActiveRecord::Base attr_accessible :quote_number has_one :customer has_one :item end customer.rb class Customer < ActiveRecord::Base attr_accessible :firstname, :lastname #unsure of what to put here #a customer can have multiple quotes, so would i use has_many or belongs_to? belongs_to :quote end item.rb的 class Item < ActiveRecord::Base attr_accessible :name, :description #also […]

重新打开由gem提供的ActiveRecord模型

我正在尝试扩展gem( https://github.com/peteonrails/vote_fu )为我的应用程序提供的ActiveRecord模型( Vote )。 (即app/models没有vote.rb ) 我的第一个方法是创建一个名为lib/extend_vote.rb的文件,其中包含以下代码: Vote.class_eval do after_create :create_activity_stream_event has_one :activity_stream_event def create_activity_stream_event # something.. end end 这在创建第一个投票时有效,但是当我尝试创建每个后续投票时,我得到错误TypeError (can’t dup NilClass) 。 我认为这个错误是由于每次请求后自动重新加载Vote类这一事实,但是lib/extend_vote.rb的代码只在服务器启动时加载一次,这会导致has_one :activity_stream_event关联表现得很奇怪。 (另外,如果我在development.rb设置config.cache_classes = true ,问题就会消失) 为了解决这个问题,我尝试通过向to_prepare添加to_prepare块来对每个请求重新加载投票扩展: config.to_prepare do load ‘extend_vote.rb’ end 这解决了(can’t dup NilClass)问题,但现在每当我创建新的投票时, create_activity_stream_event回调都被称为额外的时间。 即,第一次投票调用一次,第二次投票两次,等等。所以看起来to_prepare块正在积极地重新加载扩展TOO并添加重复的回调。 向此Vote模型添加方法和回调的最佳方法是什么?

手动更新模型后更新db / migrate?

例如,我有这个模型: class Product < ActiveRecord::Base attr_accessible :name, :order end 然后,当我做rake db:migrate它创建了这个db / migrate / 20120825132038_create_products.rb : class CreateProducts < ActiveRecord::Migration def change create_table :products do |t| t.integer :order t.string :name t.timestamps end end end 但这一切都发生了因为我使用了rails generate Product order:integer name:string 现在我转到产品型号并手动更改为: class Product < ActiveRecord::Base attr_accessible :name, :order, :category_id validates :name, uniqueness: true belongs_to :category end […]

如何在函数式编程语言中实现Rails类型webapp中的“模型”?

在MVC Web开发框架(如Ruby on Rails,Django和CakePHP)中,HTTP请求被路由到控制器,控制器获取通常持久存储到后端数据库存储的对象。 这些对象代表用户,博客post等内容,并且通常在其方法中包含用于权限,获取和/或变异其他对象,validation等的逻辑。 这些框架都非常面向对象。 我最近一直在阅读关于函数式编程的文章,它似乎带来了诸如可测试性,简洁性,模块性等巨大的好处。然而,我见过的函数式编程的大多数例子都实现了诸如quicksort或fibonnacci序列之类的琐碎function,而不是复杂的webapps。 我看了几个“function”的Web框架,他们似乎都很好地实现了视图和控制器,但很大程度上跳过了整个“模型”和“持久性”部分。 (我正在谈论更多像Compojure这样的框架,这些框架应该是纯粹的function,而不是一些方便似乎使用Scala的OO部分用于模型的东西 – 但如果我在这里错了,请纠正我。) 我还没有看到如何使用函数式编程来提供OO编程提供的隐喻,即表映射到对象,以及对象可以提供强大的封装逻辑(如权限和validation)的方法。 此外,使用SQL查询来保存数据的整个概念似乎违反了整个“副作用”概念。 有人可以解释如何在function编程的Web框架中实现“模型”层吗?

ruby on rails模型的全局方法

我的所有模型中的方法都是这样的: def formatted_start_date start_date ? start_date.to_s(:date) : nil end 我希望能为每个模型中的每个日期时间字段自动编写这样的方法,这样做的最佳方法是什么? -C

递归地包括所有模型子目录

如何在模型和lib目录中递归加载所有目录? 在application.rb中,我有以下几行: config.autoload_paths += Dir[Rails.root.join(‘app’, ‘models’, ‘{**}’)] config.autoload_paths += Dir[Rails.root.join(‘lib’, ‘{**}’)] 但他们似乎只添加了一个级别的模型和lib子目录。 谢谢